CodeIgniter4 連接數(shù)據(jù)庫

2020-08-14 09:31 更新

你可以在任意你需要的方法中添加以下代碼來連接你的數(shù)據(jù)庫,或在類的構(gòu)造函數(shù)中添加這段代碼讓其在類里全局可用。

  1. $db = \Config\Database::connect();

如果上面的函數(shù)沒有指定第一個參數(shù),它將使用數(shù)據(jù)庫配置文件中指定的默認配置組來連接數(shù)據(jù)庫,對于大多數(shù)人而言,這是首選的方案。

有一個簡便的、純粹是封裝上一段代碼的方法,亦可以讓你便捷的連接數(shù)據(jù)庫:

  1. $db = db_connect();

可用的參數(shù)

  1. 數(shù)據(jù)庫組名,一個必須與配置類的屬性名匹配的字符串。默認值為 $config->defaultGroup;
  2. TRUE/FALSE (boolean). 是否返回共享連接(參考下文的連接多個數(shù)據(jù)庫)。

手動連接數(shù)據(jù)庫

這個函數(shù)的第一個參數(shù)是 可選的 ,用來從你的配置文件中選取某個配置組(建立連接)。例如:

從配置文件中選擇一個特定的配置組,你可以這樣做:

  1. $db = \Config\Database::connect('group_name');

其中 group_name 是配置文件中配置組的名字。

用多個鏈接連同一個數(shù)據(jù)庫

默認情況下, connect() 方法每次返回數(shù)據(jù)庫連接的同一實例。若你需要一個單獨的連接到相同數(shù)據(jù)庫,使用 false 作為第二個參數(shù):

  1. $db = \Config\Database::connect('group_name', false);

連接多個數(shù)據(jù)庫

如果你需要同時連接到多個不同的數(shù)據(jù)庫,你可以這樣做:

  1. $db1 = \Config\Database::connect('group_one');
  2. $db = \Config\Database::connect('group_two');

注意: 將 “group_one” 和 “group_two” 修改為你想要連接的配置組名稱

注解

如果只是在同一連接上使用不同的數(shù)據(jù)庫,你不需要創(chuàng)建單獨的數(shù)據(jù)庫配置。當你需要時,可以切換到不同的數(shù)據(jù)庫,例如:

$db->dbSelect($database2_name);

使用自定義配置連接數(shù)據(jù)庫

你可以傳入一個數(shù)據(jù)庫配置數(shù)組參數(shù)替代配置組名稱,以此獲得一個自定義的數(shù)據(jù)庫連接。數(shù)組的格式必須與數(shù)據(jù)庫配置文件的配置組格式相同:

  1. $custom = [
  2. 'DSN' => '',
  3. 'hostname' => 'localhost',
  4. 'username' => '',
  5. 'password' => '',
  6. 'database' => '',
  7. 'DBDriver' => 'MySQLi',
  8. 'DBPrefix' => '',
  9. 'pConnect' => false,
  10. 'DBDebug' => (ENVIRONMENT !== 'production'),
  11. 'cacheOn' => false,
  12. 'cacheDir' => '',
  13. 'charset' => 'utf8',
  14. 'DBCollat' => 'utf8_general_ci',
  15. 'swapPre' => '',
  16. 'encrypt' => false,
  17. 'compress' => false,
  18. 'strictOn' => false,
  19. 'failover' => [],
  20. 'port' => 3306,
  21. ];
  22. $db = \Config\Database::connect($custom);

重新連接/保持連接有效

當你在處理一些重量級的 PHP 操作時(例如處理圖像),若超過了數(shù)據(jù)庫的超時值,你應該考慮在執(zhí)行后續(xù)查詢前先調(diào)用 reconnect() 方法向數(shù)據(jù)庫發(fā)送 ping 命令,這樣可以優(yōu)雅的保持連接有效或重新建立連接。

重要

若你使用 MySQLi 數(shù)據(jù)庫驅(qū)動,reconnect() 方法并不能 ping 通服務(wù)器但它可以關(guān)閉連接然后再次連接。

  1. $db->reconnect();

手動關(guān)閉連接

雖然 CodeIgniter 可以智能的管理并自動關(guān)閉數(shù)據(jù)庫連接,你仍可以顯式關(guān)閉連接。

  1. $db->close();
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號