1 教程-内容提要
1.1 CodeIgniter3.1教程——开始
1.2 加载静态内容
1.3 读取新闻条目
1.4 创建新闻条目
2 常规主题
2.1 CodeIgniter URL
2.2 控制器
2.3 保留名称
2.4 视图
2.5 模型
2.6 辅助函数
2.7 使用 CodeIgniter 类库
2.8 创建类库
2.9 使用 CodeIgniter 驱动器
2.10 创建驱动器
2.11 创建核心系统类
2.12 创建附属类
2.13 钩子 - 扩展框架核心
2.14 自动加载资源
2.15 公共函数
2.16 兼容性函数
2.17 URI 路由
2.18 错误处理
2.19 网页缓存
2.20 程序分析
2.21 以 CLI 方式运行
2.22 管理你的应用程序
2.23 处理多环境
2.24 在视图文件中使用 PHP 替代语法
2.25 安全
2.26 PHP 开发规范
3 类库参考
3.1 基准测试类
3.2 缓存驱动器
3.3 日历类
3.4 购物车类
3.5 配置类
3.6 Email 类
3.7 加密类(废弃)
3.8 加密类(新版)
3.9 文件上传类
3.10 表单验证类
3.11 FTP 类
3.12 图像处理类
3.13 输入类
3.14 Javascript 类
3.15 语言类
3.16 加载器类
3.17 迁移类
3.18 输出类
3.19 分页类
3.20 模板解析类
3.21 安全类
3.22 Session 类
3.23 HTML 表格类
3.24 引用通告类
3.25 排版类
3.26 单元测试类
3.27 URI 类
3.28 用户代理类
3.29 XML-RPC 与 XML-RPC 服务器类
3.30 Zip 编码类
4 数据库参考
4.1 数据库快速入门: 示例代码
4.2 数据库配置
4.3 连接你的数据库
4.4 查询
4.5 生成查询结果
4.6 查询辅助函数
4.7 查询构造器类
4.8 事务
4.9 数据库元数据
4.10 自定义函数调用
4.11 查询缓存
4.12 数据库工厂类
4.13 数据库工具类
4.14 数据库驱动器参考
5 辅助函数参考
5.1 数组辅助函数
5.2 验证码辅助函数
5.3 Cookie 辅助函数
5.4 日期辅助函数
5.5 目录辅助函数
5.6 下载辅助函数
5.7 邮件辅助函数
5.8 文件辅助函数
5.9 表单辅助函数
5.10 HTML 辅助函数
5.11 Inflector 辅助函数
5.12 语言辅助函数
5.13 数字辅助函数
5.14 路径辅助函数
5.15 安全辅助函数
5.16 表情辅助函数(废弃)
5.17 字符串辅助函数
5.18 文本辅助函数
5.19 排版辅助函数
5.20 URL 辅助函数
5.21 XML 辅助函数

数据库工具类

2017-12-03 20:02:08
linefo
550
最后编辑:linefo 于 2017-12-03 21:12:37

数据库工具类

数据库工具类提供了一些方法用于帮助你管理你的数据库。

初始化工具类

重要

由于工具类依赖于数据库驱动器,为了初始化工具类,你的数据库驱动器必须已经运行。

加载工具类的代码如下:

$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!';
}

注解

不是所有的数据库平台都支持表修复。

优化数据库

允许你优化数据库类当前正在连接的数据库。返回一个数组,包含数据库状态信息,失败时返回 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 文档,第一个参数为查询的结果对象,第二个参数可选,可以包含一些的配置参数。例如:

$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 的执行时间和内存限制,备份非常大的数据库应该不行。如果你的数据库非常大, 你可以直接使用命令行进行备份,如果你没有 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);

备份参数说明

参数 默认值 选项 描述  
tables empty array None 你要备份的表,如果留空将备份所有的表。
ignore empty array None 你要忽略备份的表。
format gzip gzip, zip, txt 导出文件的格式。
filename the current date/time None 备份文件名。如果你使用了 zip 压缩这个参数是必填的。
add_drop TRUE TRUE/FALSE 是否在导出的 SQL 文件里包含 DROP TABLE 语句
add_insert TRUE TRUE/FALSE 是否在导出的 SQL 文件里包含 INSERT 语句
newline "\n" "\n", "\r", "\r\n" 导出的 SQL 文件使用的换行符
foreign_key_checks TRUE TRUE/FALSE 导出的 SQL 文件中是否继续保持外键约束

类参考

class CI_DB_utility
backup([$params = array()])
参数:
  • $params (array) -- An associative array of options
返回:

raw/(g)zipped SQL query string

返回类型:

string

根据用户参数执行数据库备份。

database_exists($database_name)
参数:
  • $database_name (string) -- Database name
返回:

TRUE if the database exists, FALSE otherwise

返回类型:

bool

判断数据库是否存在。

list_databases()
返回:Array of database names found
返回类型:array

获取所有的数据库名称列表。

optimize_database()
返回:Array of optimization messages or FALSE on failure
返回类型:array

优化数据库。

optimize_table($table_name)
参数:
  • $table_name (string) -- Name of the table to optimize
返回:

Array of optimization messages or FALSE on failure

返回类型:

array

优化数据库表。

repair_table($table_name)
参数:
  • $table_name (string) -- Name of the table to repair
返回:

Array of repair messages or FALSE on failure

返回类型:

array

修复数据库表。

csv_from_result($query[, $delim = ', '[, $newline = "n"[, $enclosure = '"']]])
参数:
  • $query (object) -- A database result object
  • $delim (string) -- The CSV field delimiter to use
  • $newline (string) -- The newline character to use
  • $enclosure (string) -- The enclosure delimiter to use
返回:

The generated CSV file as a string

返回类型:

string

将数据库结果对象转换为 CSV 文档。

xml_from_result($query[, $params = array()])
参数:
  • $query (object) -- A database result object
  • $params (array) -- An associative array of preferences
返回:

The generated XML document as a string

返回类型:

string

将数据库结果对象转换为 XML 文档。