# 數據庫工具類
數據庫工具類提供了一些方法用于幫助你管理你的數據庫。
[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 貢獻你的力量