非常教程

Codeigniter 3参考手册

数据库 | Database

数据库工具类 | Database Utility Class

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

  • 初始化实用程序类
  • 使用数据库实用程序
    • 检索数据库名称列表
    • 确定数据库是否存在
    • 优化表格
    • 修理一张桌子
    • 优化数据库
    • 将查询结果导出为CSV文件
    • 将查询结果导出为XML文档
  • 备份您的数据库
    • 数据库备份注释
    • 用法示例
    • 设置备份首选项
    • 备份首选项说明
  • 类参考

初始化实用程序类

重要

为了初始化Utility类,您的数据库驱动程序必须已经运行,因为utilities类依赖它。

按如下方式加载Utility类:

$this->load->dbutil();

如果您要管理的数据库不是默认数据库,则还可以将另一个数据库对象传递给数据库实用程序加载器:

$this->myutil = $this->load->dbutil($this->other_db, TRUE);

在上面的例子中,我们传递一个自定义数据库对象作为第一个参数,然后告诉它返回dbutil对象,而不是直接指定给它$this->dbutil

注意

这两个参数都可以单独使用,只要传递一个空值作为第一个参数就可以跳过它。

初始化后,您将使用该$this->dbutil对象访问方法:

$this->dbutil->some_method();

使用数据库实用程序

检索数据库名称列表

返回一组数据库名称:

$dbs = $this->dbutil->list_databases();

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

确定数据库是否存在

有时候知道某个特定数据库是否存在会很有帮助。返回一个布尔值TRUE / FALSE。用法示例:

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

注意

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

优化表格

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

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

注意

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

修复一张表格

允许您使用第一个参数中指定的表名来修复表格。根据成功或失败返回TRUE / FALSE:

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

注意

并非所有的数据库平台都支持表格修复。

优化数据库

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

$result = $this->dbutil->optimize_database();

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

注意

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

将查询结果导出为CSV文件

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

$this->load->dbutil();

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

echo $this->dbutil->csv_from_result($query);

第二,第三和第四个参数允许您分别设置分隔符换行符和外壳字符。默认情况下,逗号用作分隔符,“n”用作新行,双引号用作机箱。例:

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

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

重要

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

将查询结果导出为XML文档

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

$this->load->dbutil();

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

$config = array (
        'root'          => 'root',
        'element'       => 'element',
        'newline'       => "\n",
        'tab'           => "\t"
);

echo $this->dbutil->xml_from_result($query, $config);

重要

此方法不会为您编写XML文件。它只是创建XML布局。如果您需要使用文件助手来编写文件。

备份您的数据库

数据库备份注释

允许您备份完整数据库或单个表格。备份数据可以使用Zip或Gzip格式进行压缩。

注意

此功能仅适用于MySQL和Interbase / Firebird数据库。

注意

对于Interbase / Firebird数据库,备份文件名是唯一的参数。

$this->dbutil->backup(‘db_backup_filename’);

注意

由于PHP可用的执行时间和内存有限,因此可能无法备份非常大的数据库。如果数据库非常大,则可能需要通过命令行直接从SQL服务器进行备份,或者如果您没有root权限,请让您的服务器管理员为您执行备份。

用法示例

// Load the DB utility class
$this->load->dbutil();

// Backup your entire database and assign it to a variable
$backup = $this->dbutil->backup();

// Load the file helper and write the file to your server
$this->load->helper('file');
write_file('/path/to/mybackup.gz', $backup);

// Load the download helper and send the file to your desktop
$this->load->helper('download');
force_download('mybackup.gz', $backup);

设置备份首选项

通过向backup()方法的第一个参数提交值数组来设置备份首选项。例:

$prefs = array(
        'tables'        => array('table1', 'table2'),   // Array of tables to backup.
        'ignore'        => array(),                     // List of tables to omit from the backup
        'format'        => 'txt',                       // gzip, zip, txt
        'filename'      => 'mybackup.sql',              // File name - NEEDED ONLY WITH ZIP FILES
        'add_drop'      => TRUE,                        // Whether to add DROP TABLE statements to backup file
        'add_insert'    => TRUE,                        // Whether to add INSERT data to backup file
        'newline'       => "\n"                         // Newline character used in backup file
);

$this->dbutil->backup($prefs);

备份首选项说明

偏爱

默认值

选项

描述

空阵列

没有

您想要备份的一系列表格。如果留空,所有表格将被导出。

忽视

空阵列

没有

您希望备份例程忽略的一系列表。

格式

gzip的

gzip,zip,txt

导出文件的文件格式。

文件名

当前日期/时间

没有

备份文件的名称。只有在使用zip压缩时才需要该名称。

add_drop

真正

真假

是否在您的SQL导出文件中包含DROP TABLE语句。

add_insert

真正

真假

是否在SQL导出文件中包含INSERT语句。

新队

“\ n”

“\ n”,“\ r”,“\ r \ n”

在SQL导出文件中使用的换行符类型。

FOREIGN_KEY_CHECKS

真正

真假

输出是否应该保持启用外键检查。

类参考

class CI_DB_utilitybackup([$params = array()])

参数:

$ params(array) - 一个关联的选项数组

返回:

原始/(g)压缩的SQL查询字符串

返回类型:

  • $ paramsarray) - 一个关联的选项数组
返回:raw /(g)压缩的SQL查询字符串
返回类型:字符串
根据用户首选项执行数据库备份。

database_exists($database_name)

参数:

$ database_name(字符串) - 数据库名称

返回:

如果数据库存在,则为TRUE,否则为FALSE

返回类型:

布尔

  • $ database_name字符串) - 数据库名称
返回:如果数据库存在,则返回TRUE;否则返回FALSE
返回类型:布尔值
检查数据库的存在。

list_databases()

返回:

找到数据库名称数组

返回类型:

排列

optimize_database()

返回:

优化消息数组或失败时为FALSE

返回类型:

排列

optimize_table($table_name)

参数:

$ table_name(string) - 要优化的表的名称

返回:

优化消息数组或失败时为FALSE

返回类型:

排列

  • $ table_namestring) - 要优化的表的名称
返回:优化消息数组或失败时为FALSE
返回类型:数组
优化数据库表。

repair_table($table_name)

参数:

$ table_name(string) - 要修复的表的名称

返回:

修复消息数组或失败时为FALSE

返回类型:

排列

  • $ table_namestring) - 要修复的表的名称
返回:修复消息数组或失败时为FALSE
返回类型:数组
修复数据库表。

csv_from_result($query[, $delim = ', '[, $newline = "n"[, $enclosure = '"']]])

参数:

$ query(object) - 数据库结果对象$ delim(string) - 要使用的CSV字段分隔符$ newline(string) - 要使用的换行符$ enclosure(string) - 要使用的存储区定界符

返回:

生成的CSV文件作为字符串

返回类型:

  • $ queryobject) - 一个数据库结果对象
  • $ delimstring) - 要使用的CSV字段分隔符
  • $ newlinestring) - 要使用的换行符
  • $ enclosurestring) - 要使用的机箱分隔符
返回:生成的CSV文件作为字符串
返回类型:字符串
将数据库结果对象转换为CSV文档。

xml_from_result($query[, $params = array()])

参数:

$ query(object) - 一个数据库结果对象$ params(array) - 一个首选项的关联数组

返回:

生成的XML文档作为字符串

返回类型:

  • $ queryobject) - 一个数据库结果对象
  • $ paramsarray) - 一个首选项的关联数组
返回:生成的XML文档作为字符串
返回类型:字符串
将数据库结果对象转换为XML文档。
Codeigniter 3

CodeIgniter 是一个PHP MVC框架,特点是超轻量级、有数据加密、有灵活URI路由等。对于 PHP 程序员来说,它小巧但功能强大。

主页 https://codeigniter.com/
源码 https://github.com/bcit-ci/CodeIgniter
版本 3
发布版本 3.1.5