数据库实用程序类

数据库实用程序类包含帮助您管理数据库的方法。

初始化实用程序类

按如下方式加载实用程序类

$dbutil = \Config\Database::utils();

您也可以将另一个数据库组传递给 DB Utility 加载器,以防您要管理的数据库不是默认数据库

$dbutil = \Config\Database::utils('group_name');

在上面的示例中,我们传递了一个数据库组名称作为第一个参数。

使用数据库实用程序

检索数据库名称列表

返回一个数据库名称数组

$dbutil = \Config\Database::utils();

$dbs = $dbutil->listDatabases();

foreach ($dbs as $db) {
    echo $db;
}

确定数据库是否存在

有时需要知道特定数据库是否存在。返回布尔值 true/false。使用示例

$dbutil = \Config\Database::utils();

if ($dbutil->databaseExists('database_name')) {
    // some code...
}

注意

database_name 替换为要查找的数据库名称。此方法区分大小写。

优化表

允许您使用第一个参数中指定的表名优化表。根据成功或失败返回 true/false

$dbutil = \Config\Database::utils();

if ($dbutil->optimizeTable('table_name')) {
    echo 'Success!';
}

注意

并非所有数据库平台都支持表优化。它主要用于 MySQL。

优化数据库

允许您优化 DB 类当前连接到的数据库。返回包含 DB 状态消息的数组或失败时返回 false

$dbutil = \Config\Database::utils();

$result = $dbutil->optimizeDatabase();

if ($result !== false) {
    print_r($result);
}

注意

并非所有数据库平台都支持数据库优化。它主要用于 MySQL。

将查询结果导出为 CSV 文件

允许您从查询结果生成 CSV 文件。方法的第一个参数必须包含查询结果对象。示例

$db     = db_connect();
$dbutil = \Config\Database::utils();

$query = $db->query('SELECT * FROM mytable');

echo $dbutil->getCSVFromResult($query);

第二个、第三个和第四个参数允许您分别设置分隔符、换行符和引号字符。默认情况下,逗号用作分隔符,"\n" 用作换行符,双引号用作引号。示例

$db     = db_connect();
$dbutil = \Config\Database::utils();

$query = $db->query('SELECT * FROM mytable');

$delimiter = ',';
$newline   = "\r\n";
$enclosure = '"';

echo $dbutil->getCSVFromResult($query, $delimiter, $newline, $enclosure);

重要

此方法不会为您写入 CSV 文件。它只是创建 CSV 布局。如果您需要写入文件,请使用 write_file() 助手。

将查询结果导出为 XML 文档

允许您从查询结果生成 XML 文件。第一个参数需要一个查询结果对象,第二个参数可以包含一个可选的配置参数数组。示例

<?php

$db     = db_connect();
$dbutil = \Config\Database::utils();

$query = $db->query('SELECT * FROM mytable');

$config = [
    'root'    => 'root',
    'element' => 'element',
    'newline' => "\n",
    'tab'     => "\t",
];

echo $dbutil->getXMLFromResult($query, $config);

mytable 包含 idname 列时,将获得以下 xml 结果

<root>
    <element>
        <id>1</id>
        <name>bar</name>
    </element>
</root>

重要

此方法不会为您写入 XML 文件。它只是创建 XML 布局。如果您需要写入文件,请使用 write_file() 助手。