?
This document uses PHP Chinese website manual Release
數(shù)據(jù)庫實用程序類包含幫助您管理數(shù)據(jù)庫的方法。
初始化實用程序類
使用數(shù)據(jù)庫實用程序
檢索數(shù)據(jù)庫名稱列表
確定數(shù)據(jù)庫是否存在
優(yōu)化表格
修理一張桌子
優(yōu)化數(shù)據(jù)庫
將查詢結(jié)果導(dǎo)出為CSV文件
將查詢結(jié)果導(dǎo)出為XML文檔
備份您的數(shù)據(jù)庫
數(shù)據(jù)庫備份注釋
用法示例
設(shè)置備份首選項
備份首選項說明
類參考
重要
為了初始化Utility類,您的數(shù)據(jù)庫驅(qū)動程序必須已經(jīng)運行,因為utilities類依賴它。
按如下方式加載Utility類:
$this->load->dbutil();
如果您要管理的數(shù)據(jù)庫不是默認數(shù)據(jù)庫,則還可以將另一個數(shù)據(jù)庫對象傳遞給數(shù)據(jù)庫實用程序加載器:
$this->myutil = $this->load->dbutil($this->other_db, TRUE);
在上面的例子中,我們傳遞一個自定義數(shù)據(jù)庫對象作為第一個參數(shù),然后告訴它返回dbutil對象,而不是直接指定給它$this->dbutil
。
注意
這兩個參數(shù)都可以單獨使用,只要傳遞一個空值作為第一個參數(shù)就可以跳過它。
初始化后,您將使用該$this->dbutil
對象訪問方法:
$this->dbutil->some_method();
返回一組數(shù)據(jù)庫名稱:
$dbs = $this->dbutil->list_databases();foreach ($dbs as $db){ echo $db;}
有時候知道某個特定數(shù)據(jù)庫是否存在會很有幫助。返回一個布爾值TRUE / FALSE。用法示例:
if ($this->dbutil->database_exists('database_name')){ // some code...}
注意
將database_name替換為您正在查找的數(shù)據(jù)庫的名稱。此方法區(qū)分大小寫。
允許您使用第一個參數(shù)中指定的表名來優(yōu)化表。根據(jù)成功或失敗返回TRUE / FALSE:
if ($this->dbutil->optimize_table('table_name')){ echo 'Success!';}
注意
并非所有數(shù)據(jù)庫平臺都支持表格優(yōu)化 它主要用于MySQL。
允許您使用第一個參數(shù)中指定的表名來修復(fù)表格。根據(jù)成功或失敗返回TRUE / FALSE:
if ($this->dbutil->repair_table('table_name')){ echo 'Success!';}
注意
并非所有的數(shù)據(jù)庫平臺都支持表格修復(fù)。
允許您優(yōu)化您的數(shù)據(jù)庫類當(dāng)前連接到的數(shù)據(jù)庫。返回包含DB狀態(tài)消息的數(shù)組或失敗時返回FALSE。
$result = $this->dbutil->optimize_database();if ($result !== FALSE){ print_r($result);}
注意
并非所有數(shù)據(jù)庫平臺都支持數(shù)據(jù)庫優(yōu)化 它主要用于MySQL。
允許您從查詢結(jié)果中生成CSV文件。該方法的第一個參數(shù)必須包含查詢中的結(jié)果對象。例:
$this->load->dbutil();$query = $this->db->query("SELECT * FROM mytable");echo $this->dbutil->csv_from_result($query);
第二,第三和第四個參數(shù)允許您分別設(shè)置分隔符換行符和外殼字符。默認情況下,逗號用作分隔符,“n”用作新行,雙引號用作機箱。例:
$delimiter = ",";$newline = "\r\n";$enclosure = '"';echo $this->dbutil->csv_from_result($query, $delimiter, $newline, $enclosure);
重要
此方法不會為您寫入CSV文件。它只是創(chuàng)建CSV布局。如果您需要使用文件助手來編寫文件。
允許您從查詢結(jié)果生成XML文件。第一個參數(shù)需要查詢結(jié)果對象,第二個參數(shù)可能包含一個可選的config參數(shù)數(shù)組。例:
$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文件。它只是創(chuàng)建XML布局。如果您需要使用文件助手來編寫文件。
允許您備份完整數(shù)據(jù)庫或單個表格。備份數(shù)據(jù)可以使用Zip或Gzip格式進行壓縮。
注意
此功能僅適用于MySQL和Interbase / Firebird數(shù)據(jù)庫。
注意
對于Interbase / Firebird數(shù)據(jù)庫,備份文件名是唯一的參數(shù)。
$this->dbutil->backup(‘db_backup_filename’);
注意
由于PHP可用的執(zhí)行時間和內(nèi)存有限,因此可能無法備份非常大的數(shù)據(jù)庫。如果數(shù)據(jù)庫非常大,則可能需要通過命令行直接從SQL服務(wù)器進行備份,或者如果您沒有root權(quán)限,請讓您的服務(wù)器管理員為您執(zhí)行備份。
// 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()
方法的第一個參數(shù)提交值數(shù)組來設(shè)置備份首選項。例:
$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);
偏愛 | 默認值 | 選項 | 描述 |
---|---|---|---|
表 | 空陣列 | 沒有 | 您想要備份的一系列表格。如果留空,所有表格將被導(dǎo)出。 |
忽視 | 空陣列 | 沒有 | 您希望備份例程忽略的一系列表。 |
格式 | gzip的 | gzip,zip,txt | 導(dǎo)出文件的文件格式。 |
文件名 | 當(dāng)前日期/時間 | 沒有 | 備份文件的名稱。只有在使用zip壓縮時才需要該名稱。 |
add_drop | 真正 | 真假 | 是否在您的SQL導(dǎo)出文件中包含DROP TABLE語句。 |
add_insert | 真正 | 真假 | 是否在SQL導(dǎo)出文件中包含INSERT語句。 |
新隊 | “\ n” | “\ n”,“\ r”,“\ r \ n” | 在SQL導(dǎo)出文件中使用的換行符類型。 |
FOREIGN_KEY_CHECKS | 真正 | 真假 | 輸出是否應(yīng)該保持啟用外鍵檢查。 |
class CI_DB_utilitybackup([$params = array()])
參數(shù): | $ params(array) - 一個關(guān)聯(lián)的選項數(shù)組 |
---|---|
返回: | 原始/(g)壓縮的SQL查詢字符串 |
返回類型: | 串 |
$ params(array) - 一個關(guān)聯(lián)的選項數(shù)組
返回:raw /(g)壓縮的SQL查詢字符串
返回類型:字符串
根據(jù)用戶首選項執(zhí)行數(shù)據(jù)庫備份。
database_exists($database_name)
參數(shù): | $ database_name(字符串) - 數(shù)據(jù)庫名稱 |
---|---|
返回: | 如果數(shù)據(jù)庫存在,則為TRUE,否則為FALSE |
返回類型: | 布爾 |
$ database_name(字符串) - 數(shù)據(jù)庫名稱
返回:如果數(shù)據(jù)庫存在,則返回TRUE;否則返回FALSE
返回類型:布爾值
檢查數(shù)據(jù)庫的存在。
list_databases()
返回: | 找到數(shù)據(jù)庫名稱數(shù)組 |
---|---|
返回類型: | 排列 |
optimize_database()
返回: | 優(yōu)化消息數(shù)組或失敗時為FALSE |
---|---|
返回類型: | 排列 |
optimize_table($table_name)
參數(shù): | $ table_name(string) - 要優(yōu)化的表的名稱 |
---|---|
返回: | 優(yōu)化消息數(shù)組或失敗時為FALSE |
返回類型: | 排列 |
$ table_name(string) - 要優(yōu)化的表的名稱
返回:優(yōu)化消息數(shù)組或失敗時為FALSE
返回類型:數(shù)組
優(yōu)化數(shù)據(jù)庫表。
repair_table($table_name)
參數(shù): | $ table_name(string) - 要修復(fù)的表的名稱 |
---|---|
返回: | 修復(fù)消息數(shù)組或失敗時為FALSE |
返回類型: | 排列 |
$ table_name(string) - 要修復(fù)的表的名稱
返回:修復(fù)消息數(shù)組或失敗時為FALSE
返回類型:數(shù)組
修復(fù)數(shù)據(jù)庫表。
csv_from_result($query[, $delim = ', '[, $newline = "n"[, $enclosure = '"']]])
參數(shù): | $ query(object) - 數(shù)據(jù)庫結(jié)果對象$ delim(string) - 要使用的CSV字段分隔符$ newline(string) - 要使用的換行符$ enclosure(string) - 要使用的存儲區(qū)定界符 |
---|---|
返回: | 生成的CSV文件作為字符串 |
返回類型: | 串 |
$ query(object) - 一個數(shù)據(jù)庫結(jié)果對象
$ delim(string) - 要使用的CSV字段分隔符
$ newline(string) - 要使用的換行符
$ enclosure(string) - 要使用的機箱分隔符
返回:生成的CSV文件作為字符串
返回類型:字符串
將數(shù)據(jù)庫結(jié)果對象轉(zhuǎn)換為CSV文檔。
xml_from_result($query[, $params = array()])
參數(shù): | $ query(object) - 一個數(shù)據(jù)庫結(jié)果對象$ params(array) - 一個首選項的關(guān)聯(lián)數(shù)組 |
---|---|
返回: | 生成的XML文檔作為字符串 |
返回類型: | 串 |
$ query(object) - 一個數(shù)據(jù)庫結(jié)果對象
$ params(array) - 一個首選項的關(guān)聯(lián)數(shù)組
返回:生成的XML文檔作為字符串
返回類型:字符串
將數(shù)據(jù)庫結(jié)果對象轉(zhuǎn)換為XML文檔。