?
This document uses PHP Chinese website manual Release
有兩種連接數(shù)據(jù)庫(kù)的方法:
“自動(dòng)連接”功能將在每次加載頁(yè)面時(shí)加載和實(shí)例化數(shù)據(jù)庫(kù)類(lèi)。要啟用“自動(dòng)連接”,請(qǐng)將Word數(shù)據(jù)庫(kù)添加到庫(kù)數(shù)組中,如下文件所示:
application/config/autooload.php
如果只有某些頁(yè)面需要數(shù)據(jù)庫(kù)連接,則可以通過(guò)在需要的任何函數(shù)中添加這一行代碼或在類(lèi)構(gòu)造函數(shù)中手動(dòng)連接到數(shù)據(jù)庫(kù),從而使數(shù)據(jù)庫(kù)在該類(lèi)中全局可用。
$this->load->database();
如果上面的函數(shù)不在第一個(gè)參數(shù)中包含任何信息,它將連接到數(shù)據(jù)庫(kù)配置文件中指定的組。對(duì)于大多數(shù)人來(lái)說(shuō),這是首選的使用方法。
數(shù)據(jù)庫(kù)連接值,作為數(shù)組或DSN字符串傳遞。
TRUE / FALSE(布爾值)。是否返回連接ID(請(qǐng)參閱下面的連接到多個(gè)數(shù)據(jù)庫(kù))。
TRUE / FALSE(布爾值)。是否啟用查詢(xún)生成器類(lèi)。默認(rèn)設(shè)置為T(mén)RUE。
此函數(shù)的第一個(gè)參數(shù)可以任選用于從配置文件中指定特定的數(shù)據(jù)庫(kù)組,或者甚至可以為配置文件中未指定的數(shù)據(jù)庫(kù)提交連接值。例子:
要從配置文件中選擇特定的組,可以這樣做:
$this->load->database('group_name');
所在群[醫(yī)]名稱(chēng)是配置文件中連接組的名稱(chēng)。
要手動(dòng)連接到所需的數(shù)據(jù)庫(kù),可以傳遞一個(gè)值數(shù)組:
$config['hostname'] = 'localhost'; $config['username'] = 'myusername'; $config['password'] = 'mypassword'; $config['database'] = 'mydatabase'; $config['dbdriver'] = 'mysqli'; $config['dbprefix'] = ''; $config['pconnect'] = FALSE; $config['db_debug'] = TRUE; $config['cache_on'] = FALSE; $config['cachedir'] = ''; $config['char_set'] = 'utf8'; $config['dbcollat'] = 'utf8_general_ci'; $this->load->database($config);
有關(guān)這些值中每個(gè)值的信息,請(qǐng)參見(jiàn)配置頁(yè)...
注
對(duì)于PDO驅(qū)動(dòng)程序,應(yīng)該使用$config‘dsnn’設(shè)置而不是“主機(jī)名”和“數(shù)據(jù)庫(kù)”:
也可以將數(shù)據(jù)庫(kù)值作為數(shù)據(jù)源名稱(chēng)提交。DSNS必須具有以下原型:
$dsn = 'dbdriver://username:[email protected]/database';$this->load->database($dsn);
若要在與DSN字符串連接時(shí)重寫(xiě)默認(rèn)配置值,請(qǐng)將配置變量添加為查詢(xún)字符串。
$dsn = 'dbdriver: //username:[email protected]/database?char_set=utf8&dbcollat=utf8_general_ci&cache_on=true&cachedir=/path/to/cache'; $this->load->database($dsn);
如果你需要同時(shí)連接多個(gè)數(shù)據(jù)庫(kù),你可以這樣做:
$DB1 = $this->load->database('group_one', TRUE);$DB2 = $this->load->database('group_two', TRUE);
注意:將單詞“group_one”和“group_two”更改為要連接的特定組名(或者您可以按照上面所述傳遞連接值)。
通過(guò)將第二個(gè)參數(shù)設(shè)置為T(mén)RUE(布爾值),該函數(shù)將返回?cái)?shù)據(jù)庫(kù)對(duì)象。
注
以這種方式連接時(shí),您將使用對(duì)象名稱(chēng)來(lái)發(fā)布命令,而不是本指南中使用的語(yǔ)法。換句話說(shuō),而不是發(fā)出命令:
注
如果只需要在同一連接上使用不同的數(shù)據(jù)庫(kù),則不需要?jiǎng)?chuàng)建單獨(dú)的數(shù)據(jù)庫(kù)配置。您可以在需要時(shí)切換到不同的數(shù)據(jù)庫(kù),如下所示:
如果數(shù)據(jù)庫(kù)服務(wù)器的空閑超時(shí)在您執(zhí)行一些繁重的PHP提升(例如處理圖像)時(shí)被超過(guò),則應(yīng)該考慮在發(fā)送進(jìn)一步查詢(xún)之前使用reconnect()方法對(duì)服務(wù)器執(zhí)行ping操作,這可以適當(dāng)?shù)乇3诌B接活著或重新建立它。
$this->db->reconnect();
雖然CodeIgniter智能地負(fù)責(zé)關(guān)閉數(shù)據(jù)庫(kù)連接,但您可以顯式關(guān)閉連接。
$this->db->close();