数据库实用工具

数据库实用工具类包含了帮助你管理数据库的方法。

初始化实用工具类

按照以下方式加载实用工具类:

$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 类当前连接的数据库。成功返回包含数据库状态消息的数组,失败返回 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);

mytableidname 列时,将得到以下 xml 结果:

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

重要

这个方法不会为你写入 XML 文件。它仅仅创建 XML 布局。如果你需要写入文件,使用 write_file() 辅助函数。