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