W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
有兩種方法連接數(shù)據(jù)庫:
“自動(dòng)連接” 特性將在每一個(gè)頁面加載時(shí)自動(dòng)實(shí)例化數(shù)據(jù)庫類。要啟用“自動(dòng)連接”, 可在 application/config/autoload.php 中的 library 數(shù)組里添加 database:
$autoload['libraries'] = array('database');
如果你只有一部分頁面需要數(shù)據(jù)庫連接,你可以在那些有需要的函數(shù)里手工添加 如下代碼來連接數(shù)據(jù)庫,或者寫在類的構(gòu)造函數(shù)里,讓整個(gè)類都可以訪問:
$this->load->database();
如果 database() 函數(shù)沒有指定第一個(gè)參數(shù),它將使用數(shù)據(jù)庫配置文件中 指定的組連接數(shù)據(jù)庫。對大多數(shù)人而言,這是首選方案。
這個(gè)函數(shù)的第一個(gè)參數(shù)是可選的,被用來從你的配置文件中 指定一個(gè)特定的數(shù)據(jù)庫組,甚至可以使用沒有在配置文件中定義的 數(shù)據(jù)庫連接值。下面是例子:
從你的配置文件中選擇一個(gè)特定分組:
$this->load->database('group_name');
其中 group_name 是你的配置文件中連接組的名字。
連接一個(gè)完全手動(dòng)指定的數(shù)據(jù)庫,可以傳一個(gè)數(shù)組參數(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);
這些值的詳細(xì)信息請參考 :doc: 數(shù)據(jù)庫配置 頁面。
注解
對于 PDO 驅(qū)動(dòng),你應(yīng)該使用 $config['dsn'] 取代 'hostname' 和 'database' 參數(shù):
$config['dsn'] = 'mysql:host=localhost;dbname=mydatabase';
或者你可以使用數(shù)據(jù)源名稱(DSN,Data Source Name)作為參數(shù),DSN 的格式必須類似于下面這樣:
$dsn = 'dbdriver://username:password@hostname/database';
$this->load->database($dsn);
當(dāng)用 DSN 字符串連接時(shí),要覆蓋默認(rèn)配置,可以像添加查詢字符串一樣添加配置變量。
$dsn = 'dbdriver://username:password@hostname/database?char_set=utf8&dbcollat=utf8_general_ci&cache_on=true&cachedir=/path/to/cache';
$this->load->database($dsn);
如果你需要同時(shí)連接到多個(gè)不同的數(shù)據(jù)庫,可以這樣:
$DB1 = $this->load->database('group_one', TRUE);
$DB2 = $this->load->database('group_two', TRUE);
注意:將 "group_one" 和 "group_two" 修改為你要連接的組名稱 (或者像上面介紹的那樣傳入連接值數(shù)組)
第二個(gè)參數(shù) TRUE 表示函數(shù)將返回?cái)?shù)據(jù)庫對象。
注解
當(dāng)你使用這種方式連接數(shù)據(jù)庫時(shí),你將通過你的對象名來執(zhí)行數(shù)據(jù)庫命令, 而不再是通過這份指南中通篇介紹的,就像下面這樣的語法了:
$this->db->query();
$this->db->result();
etc...
取而代之的,你將這樣執(zhí)行數(shù)據(jù)庫命令:
$DB1->query();
$DB1->result();
etc...
注解
如果你只是需要切換到同一個(gè)連接的另一個(gè)不同的數(shù)據(jù)庫,你沒必要?jiǎng)?chuàng)建 獨(dú)立的數(shù)據(jù)庫配置,你可以像下面這樣切換到另一個(gè)數(shù)據(jù)庫:
$this->db->db_select($database2_name);
## 重新連接 / 保持連接有效
當(dāng)你在處理一些重量級的 PHP 操作時(shí)(例如處理圖片),如果超過了數(shù)據(jù)庫的超時(shí)值, 你應(yīng)該考慮在執(zhí)行后續(xù)查詢之前先調(diào)用 reconnect() 方法向數(shù)據(jù)庫發(fā)送 ping 命令, 這樣可以優(yōu)雅的保持連接有效或者重新建立起連接。
$this->db->reconnect();
## 手動(dòng)關(guān)閉連接
雖然 CodeIgniter 可以智能的管理并自動(dòng)關(guān)閉數(shù)據(jù)庫連接,你仍可以用下面的方法顯式的關(guān)閉連接:
$this->db->close();
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: