CodeIgniter 數(shù)據(jù)庫工具類

2018-07-21 15:42 更新

數(shù)據(jù)庫工具類

數(shù)據(jù)庫工具類提供了一些方法用于幫助你管理你的數(shù)據(jù)庫。

初始化工具類

重要
由于工具類依賴于數(shù)據(jù)庫驅(qū)動(dòng)器,為了初始化工具類,你的數(shù)據(jù)庫驅(qū)動(dòng)器必須已經(jīng)運(yùn)行。

加載工具類的代碼如下:

$this->load->dbutil();

如果你想管理的不是你正在使用的數(shù)據(jù)庫,你還可以傳另一個(gè)數(shù)據(jù)庫對(duì)象到數(shù)據(jù)庫工具類的加載方法:

$this->myutil = $this->load->dbutil($this->other_db, TRUE);

上例中,我們通過第一個(gè)參數(shù)傳遞了一個(gè)自定義的數(shù)據(jù)庫對(duì)象,第二個(gè)參數(shù)表示方法將返回 dbutil 對(duì)象, 而不是直接賦值給 $this->dbutil 。

注解

兩個(gè)參數(shù)都可以獨(dú)立使用,如果你只想傳第二個(gè)參數(shù),可以將第一個(gè)參數(shù)置空。

一旦初始化結(jié)束,你就可以使用 $this->dbutil 對(duì)象來訪問它的方法:

$this->dbutil->some_method();

使用數(shù)據(jù)庫工具類

獲取數(shù)據(jù)庫名稱列表

返回一個(gè)包含所有數(shù)據(jù)庫名稱的列表:

$dbs = $this->dbutil->list_databases();

foreach ($dbs as $db)
{
    echo $db;
}

判斷一個(gè)數(shù)據(jù)庫是否存在

有時(shí)我們需要判斷某個(gè)數(shù)據(jù)庫是否存在,可以使用該方法。方法返回布爾值 TRUE/FALSE 。例如:

if ($this->dbutil->database_exists('database_name'))
{
    // some code...
}

注解

使用你自己的數(shù)據(jù)庫名替換 database_name ,該方法區(qū)分大小寫。

優(yōu)化表

根據(jù)你指定的表名來優(yōu)化表,根據(jù)成敗返回 TRUE 或 FALSE

if ($this->dbutil->optimize_table('table_name'))
{
    echo 'Success!';
}

注解

不是所有的數(shù)據(jù)庫平臺(tái)都支持表優(yōu)化,通常使用在 MySQL 數(shù)據(jù)庫上。

修復(fù)表

根據(jù)你指定的表名來修復(fù)表,根據(jù)成敗返回 TRUE 或 FALSE

if ($this->dbutil->repair_table('table_name'))
{
    echo 'Success!';
}

注解

不是所有的數(shù)據(jù)庫平臺(tái)都支持表修復(fù)。

優(yōu)化數(shù)據(jù)庫

允許你優(yōu)化數(shù)據(jù)庫類當(dāng)前正在連接的數(shù)據(jù)庫。返回一個(gè)數(shù)組,包含數(shù)據(jù)庫狀態(tài)信息,失敗時(shí)返回 FALSE 。

$result = $this->dbutil->optimize_database();

if ($result !== FALSE)
{
    print_r($result);
}

注解

不是所有的數(shù)據(jù)庫平臺(tái)都支持?jǐn)?shù)據(jù)庫優(yōu)化,通常使用在 MySQL 數(shù)據(jù)庫上。

將查詢結(jié)果導(dǎo)出到 CSV 文檔

允許你從查詢結(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ù)分別為分隔符、換行符和每個(gè)字段包圍字符,默認(rèn)情況下,分隔符為逗號(hào),換行符為 "n" , 包圍字符為雙引號(hào)。例如:

$delimiter = ",";
$newline = "\r\n";
$enclosure = '"';

echo $this->dbutil->csv_from_result($query, $delimiter, $newline, $enclosure);

重要

該方法并不寫入 CSV 文檔,它只是簡單的返回 CSV 內(nèi)容,如果你需要寫入到文件中, 你可以使用 文件輔助函數(shù) 。

將查詢結(jié)果導(dǎo)出到 XML 文檔

允許你從查詢結(jié)果生成 XML 文檔,第一個(gè)參數(shù)為查詢的結(jié)果對(duì)象,第二個(gè)參數(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 文檔,它只是簡單的返回 XML 內(nèi)容,如果你需要寫入到文件中, 你可以使用 文件輔助函數(shù) 。

備份你的數(shù)據(jù)庫

數(shù)據(jù)備份說明

允許你備份完整的數(shù)據(jù)庫或指定的表。備份的數(shù)據(jù)可以壓縮成 Zip 或 Gzip 格式。

注解

該功能只支持 MySQL 和 Interbase/Firebird 數(shù)據(jù)庫。

注解

對(duì)于 Interbase/Firebird 數(shù)據(jù)庫,只能提供一個(gè)備份文件名參數(shù)。

$this->dbutil->backup('db_backup_filename');

注解

限于 PHP 的執(zhí)行時(shí)間和內(nèi)存限制,備份非常大的數(shù)據(jù)庫應(yīng)該不行。如果你的數(shù)據(jù)庫非常大, 你可以直接使用命令行進(jìn)行備份,如果你沒有 root 權(quán)限的話,讓你的管理員來幫你備份。

使用示例

// 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);

設(shè)置備份參數(shù)

備份參數(shù)為一個(gè)數(shù)組,通過第一個(gè)參數(shù)傳遞給 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);

備份參數(shù)說明

參數(shù) 默認(rèn)值 選項(xiàng) 描述
tables empty array None 你要備份的表,如果留空將備份所有的表。
ignore empty array None 你要忽略備份的表。
format gzip gzip, zip, txt 導(dǎo)出文件的格式。
filename the current date/time None 備份文件名。如果你使用了 zip 壓縮這個(gè)參數(shù)是必填的。
add_drop TRUE TRUE/FALSE 是否在導(dǎo)出的 SQL 文件里包含 DROP TABLE 語句
add_insert TRUE TRUE/FALSE 是否在導(dǎo)出的 SQL 文件里包含 INSERT 語句
newline "\n" "\n", "\r", "\r\n" 導(dǎo)出的 SQL 文件使用的換行符
foreign_key_checks TRUE TRUE/FALSE 導(dǎo)出的 SQL 文件中是否繼續(xù)保持外鍵約束

類參考

classCI_DB_utility

backup([$params = array()])

參數(shù):

  • $params (array) -- An associative array of options

返回: raw/(g)zipped SQL query string

返回類型: string

根據(jù)用戶參數(shù)執(zhí)行數(shù)據(jù)庫備份。

database_exists($database_name)

參數(shù):

  • $database_name (string) -- Database name

返回: TRUE if the database exists, FALSE otherwise

返回類型: bool

判斷數(shù)據(jù)庫是否存在。

list_databases()

返回: Array of database names found
返回類型: array

獲取所有的數(shù)據(jù)庫名稱列表。

optimize_database()

返回: Array of optimization messages or FALSE on failure
返回類型: array

優(yōu)化數(shù)據(jù)庫。

optimize_table($table_name)

參數(shù):

  • $table_name (string) -- Name of the table to optimize

返回: Array of optimization messages or FALSE on failure

返回類型: array

優(yōu)化數(shù)據(jù)庫表。

repair_table($table_name)

參數(shù):

  • $table_name (string) -- Name of the table to repair

返回: Array of repair messages or FALSE on failure

返回類型: array

修復(fù)數(shù)據(jù)庫表。

csv_from_result($query[, $delim = ', '[, $newline = "n"[, $enclosure = '"']]])

參數(shù):

  • $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

將數(shù)據(jù)庫結(jié)果對(duì)象轉(zhuǎn)換為 CSV 文檔。

xml_from_result($query[, $params = array()])

參數(shù):

  • $query (object) -- A database result object
  • $params (array) -- An associative array of preferences

返回: The generated XML document as a string

返回類型: string

將數(shù)據(jù)庫結(jié)果對(duì)象轉(zhuǎn)換為 XML 文檔。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)