首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

ThinkPHP 3.2.3 數據庫配置新特性深度解析:PDO 重寫與靈活連接模式

     編輯:PHP 相關知識

承接上文 ThinkPHP 3.2 核心變革,本文聚焦 3.2.3 版本數據庫層的重大更新。此版本底層驅動全面採用 PDO 重寫,配置體系更靈活強大,並引入獨立調試模式與多種連接定義方式,極大提升了開發體驗。

一、完整數據庫配置參數速查表

/* 數據庫設置 */
'DB_TYPE'   => '',      // 數據庫類型:mysql/sqlite/oracle/pgsql/sqlsrv/firebird
'DB_HOST'   => '',      // 服務器地址(建議用 IP)
'DB_NAME'   => '',      // 數據庫名
'DB_USER'   => '',      // 用戶名
'DB_PWD'    => '',      // 密碼
'DB_PORT'   => '',      // 端口(留空取默認)
'DB_PREFIX' => '',      // 表前綴
'DB_PARAMS' => array(), // PDO 連接參數(傳入 PDO 構造函數第 4 參數)
'DB_DEBUG'  => TRUE,    // 獨立調試模式,開啟後記錄 SQL 日誌
'DB_LITE'   => false,   // Lite 模式:僅支持原生 SQL 查詢
'DB_FIELDS_CACHE' => true, // 啟用字段緩存
'DB_CHARSET' => 'utf8', // 編碼
'DB_DEPLOY_TYPE' => 0,  // 0 集中式/1 分布式(主從)
'DB_RW_SEPARATE' => false, // 讀寫分離(主從有效)
'DB_MASTER_NUM' => 1,   // 主服務器數量
'DB_SLAVE_NO' => '',    // 指定從服務器序號

二、參數變更對照

移除參數(3.2.2 → 3.2.3):

  • DB_FIELDTYPE_CHECK(強制字段類型檢測)
  • DB_SQL_BUILD_CACHE、DB_SQL_BUILD_QUEUE、DB_SQL_BUILD_LENGTH(SQL 構建緩存機制)
  • DB_SQL_LOG(由 DB_DEBUG 替代)
  • DB_BIND_PARAM(PDO 自動參數綁定,無需配置)

新增參數: DB_DEBUG、DB_LITE。

關鍵點:3.2.3 將數據庫調試模式(DB_DEBUG)與項目調試模式(APP_DEBUG)解耦,可獨立控制 SQL 日誌記錄。

三、多樣化的連接定義方式

1. 全局配置範例

'DB_TYPE' => 'mysql',
'DB_HOST' => '192.168.1.10',
'DB_NAME' => 'thinkphp',
'DB_USER' => 'root',
'DB_PWD' => '1234',
'DB_PORT' => '3306',
'DB_PREFIX' => 'think_',
'DB_CHARSET' => 'utf8',
'DB_DEBUG' => TRUE

2. 模型類中單獨定義(數組方式)

namespace Home\Model;
use Think\Model;
class UserModel extends Model {
    protected $connection = array(
        'db_type' => 'mysql',
        'db_user' => 'root',
        'db_pwd' => '1234',
        'db_host' => '192.168.1.10',
        'db_port' => '3306',
        'db_name' => 'thinkphp',
        'db_charset' => 'utf8',
    );
}

注意:模型中參數名為全局配置的小寫形式。

3. 字符串 DSN 方式

protected $connection = 'mysql://root:1234@192.168.1.10:3306/thinkphp#utf8';

格式:類型://用戶:密碼@地址:端口/數據庫#字符集。

4. 配置文件預定義後引用

'DB_CONFIG1' => array( ... ), // 數組
'DB_CONFIG2' => 'mysql://root:1234@192.168.1.10:3306/thinkphp#utf8'; // 字符串

// 模型中調用
protected $connection = 'DB_CONFIG1'; // 或 'DB_CONFIG2'

5. 實例化時動態指定(M 方法)

$User = M('User', 'other_', 'mysql://root:1234@192.168.1.10/demo#utf8');
// 或使用預定義配置
$User = M('User', 'other_', 'DB_CONFIG2');

第三參數支持數組、DSN 字符串或配置名,極大便利了多數據庫切換場景。

四、DB_DSN 與 DB_PARAMS 補充說明

  • DB_DSN:通常無需手動設置,驅動會根據類型自動構建;如需自定義請遵循 PDO DSN 規範。
  • DB_PARAMS:直接傞入 PDO 構造函數的第四個參數(驅動選項陣列)。

總結:ThinkPHP 3.2.3 通過 PDO 重寫統一了底層交互,配置體系更符合現代 PHP 開發習慣,多種連接定義方式覆蓋從全局到臨時的各類場景,配合獨立調試開關,讓數據庫操作更可控、更高效。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved