資料庫設定¶
CodeIgniter 提供一個設定檔讓您設定資料庫連線資料(使用者帳號、使用者密碼、資料庫名稱 等…)。 這一個設定檔位於 application/config/database.php。 你也可以藉由位於各別的環境設定目錄當中的 database.php 來為該 環境 設定資料庫連線資料。
資料庫設定值是存放在一個遵照以下規範的多維陣列裡面:
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'database_name',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => TRUE,
'db_debug' => TRUE,
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'autoinit' => TRUE,
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array()
);
某些 資料庫drivers (例如 PDO、PostgreSQL、Oracle、ODBC) 可能需要提供完整的 DSN 字串。 在這些案例當中中,你需要使用 ‘dsn’ 設定參數,因為你使用的 driver’s 是基於 php 原生 extension,例如:
// PDO
$db['default']['dsn'] = 'pgsql:host=localhost;port=5432;dbname=database_name';
// Oracle
$db['default']['dsn'] = '//localhost/XE';
你也可以指定當主要連線因為某些原因不能連現的時候進行失敗接管。 這些失敗接管可以藉由設定 failover 在一個連線上,例如:
$db['default']['failover'] = array(
array(
'hostname' => 'localhost1',
'username' => '',
'password' => '',
'database' => '',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => TRUE,
'db_debug' => TRUE,
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'autoinit' => TRUE,
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE
),
array(
'hostname' => 'localhost2',
'username' => '',
'password' => '',
'database' => '',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => TRUE,
'db_debug' => TRUE,
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'autoinit' => TRUE,
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE
)
);
你可以指定數個你需要的失敗接管。
我們使用多為陣列儲存的原因是為了讓您可以選擇性設定多組資料庫連接值。 在一個系統底下執行多重環境(開發、正式、測試等),您可以為了每一個開發環境建立獨立的資料庫設定,並且可以任意時候切換資料庫。 舉例,可以設定 “test” 資料庫環境如下:
$db['test'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'database_name',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => TRUE,
'db_debug' => TRUE,
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'autoinit' => TRUE,
'compress' => FALSE,
'encrypt' => FALSE,
'stricton' => FALSE,
'failover' => array()
);
然後,可以告訴系統現在要使用 “test” 連線資料庫,藉由修改設定檔:
$active_group = 'test';
查詢生成器¶
查詢生成器類別 是根據資料庫設定檔內 $query_builder 參數來進行全域設定(允許/禁止 TRUE/FALSE (boolean))。
預設值為 TRUE。 如果你不想使用查詢生成器類別,請將此設定為 FALSE 以便讓系統降低初始化資料庫類別時所需要的資源。
$query_builder = TRUE;
設定值說明:¶
設定名稱 | 說明 |
---|---|
dsn | DSN 連線字串(所有設定一次完成的設定方式) |
hostname | 您的資料庫伺服器 hostname。通常是本地端 “localhost”。 |
username | 用以連線資料庫的使用者名稱。 |
password | 用以連線資料庫的使用者密碼。 |
database | 你所要連線的資料庫名稱。 |
dbdriver | 資料庫類型。例如:mysqli, postgre, odbc 等。 必須使用小寫字母。 |
dbprefix |
|
pconnect | TRUE/FALSE (boolean) - 使用保持的連線功能。 |
db_debug | TRUE/FALSE (boolean) - 是否顯示資料庫的錯誤訊息。 |
cache_on | TRUE/FALSE (boolean) - 是否使用資料庫快取功能,詳見 資料庫快取類別. |
cachedir | 使用絕對目錄來設定資料庫快取目錄。 |
char_set | 與資料庫溝通使用的字符集。 |
dbcollat | 與資料庫溝通使用的字符排序。 |
swap_pre |
|
autoinit |
|
schema | 資料庫的 schema,預設為 “public”。被 PostgreSQL 和 ODBC 類型使用。 |
encrypt | 是否進行加密的連線。 |
compress | 是否進行壓縮的客戶端(MySQL 專用)。 |
stricton | TRUE/FALSE (boolean) - 是否使用 “Strict Mode” 連線,使用嚴格的 SQL 對開發中的應用程式是件好事。 |
port |
|