# 数据库工具类
数据库工具类提供了一些方法用于帮助你管理你的数据库。
[TOC=2,3]
## 初始化工具类
>[danger] 重要
> 由于工具类依赖于数据库驱动器,为了初始化工具类,你的数据库驱动器必须已经运行。
加载工具类的代码如下:
~~~
$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 内容,如果你需要写入到文件中, 你可以使用 [文件辅助函数](http://codeigniter.org.cn/user_guide/helpers/file_helper.html) 。
### 将查询结果导出到 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 内容,如果你需要写入到文件中, 你可以使用 [文件辅助函数](http://codeigniter.org.cn/user_guide/helpers/file_helper.html) 。
## 备份你的数据库
### 数据备份说明
允许你备份完整的数据库或指定的表。备份的数据可以压缩成 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 文件中是否继续保持外键约束 |
## 类参考
classCI_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 文档。
- 欢迎使用 CodeIgniter
- 安装说明
- 下载 CodeIgniter
- 安装说明
- 从老版本升级
- 疑难解答
- CodeIgniter 概览
- CodeIgniter 将从这里开始
- CodeIgniter 是什么?
- 支持特性
- 应用程序流程图
- 模型-视图-控制器
- 设计与架构目标
- 教程 - 内容提要
- 加载静态内容
- 读取新闻条目
- 创建新闻条目
- 结束语
- 常规主题
- CodeIgniter URL
- 控制器
- 保留名称
- 视图
- 模型
- 辅助函数
- 使用 CodeIgniter 类库
- 创建类库
- 使用 CodeIgniter 驱动器
- 创建驱动器
- 创建核心系统类
- 创建附属类
- 钩子 - 扩展框架核心
- 自动加载资源
- 公共函数
- 兼容性函数
- URI 路由
- 错误处理
- 网页缓存
- 程序分析
- 以 CLI 方式运行
- 管理你的应用程序
- 处理多环境
- 在视图文件中使用 PHP 替代语法
- 安全
- PHP 开发规范
- 类库参考
- 基准测试类
- 缓存驱动器
- 日历类
- 购物车类
- 配置类
- Email 类
- 加密类
- 加密类(新版)
- 文件上传类
- 表单验证类
- FTP 类
- 图像处理类
- 输入类
- Javascript 类
- 语言类
- 加载器类
- 迁移类
- 输出类
- 分页类
- 模板解析类
- 安全类
- Session 类
- HTML 表格类
- 引用通告类
- 排版类
- 单元测试类
- URI 类
- 用户代理类
- XML-RPC 与 XML-RPC 服务器类
- Zip 编码类
- 数据库参考
- 数据库快速入门: 示例代码
- 数据库配置
- 连接你的数据库
- 查询
- 生成查询结果
- 查询辅助函数
- 查询构造器类
- 事务
- 数据库元数据
- 自定义函数调用
- 数据库缓存类
- 数据库工厂类
- 数据库工具类
- 数据库驱动器参考
- 辅助函数参考
- 数组辅助函数
- 验证码辅助函数
- Cookie 辅助函数
- 日期辅助函数
- 目录辅助函数
- 下载辅助函数
- 邮件辅助函数
- 文件辅助函数
- 表单辅助函数
- HTML 辅助函数
- 语言辅助函数
- Inflector 辅助函数
- 数字辅助函数
- 路径辅助函数
- 安全辅助函数
- 表情辅助函数
- 字符串辅助函数
- 文本辅助函数
- 排版辅助函数
- URL 辅助函数
- XML 辅助函数
- 向 CodeIgniter 贡献你的力量