ThinkPHP3.2.3資料庫設定新特性,thinkphp3.2.3
ThinkPHP3.2.3版本資料庫驅動採用PDO完全重寫,配置和使用上面也比之前版本更加靈活和強大,我們來瞭解下如何使用。
首先,3.2.3的資料庫配置資訊有所調整,完整的資料庫設定包括:
複製代碼 代碼如下:
/* 資料庫設定 */
'DB_TYPE' => '', // 資料庫類型
'DB_HOST' => '', // 伺服器位址
'DB_NAME' => '', // 資料庫名
'DB_USER' => '', // 使用者名稱
'DB_PWD' => '', // 密碼
'DB_PORT' => '', // 連接埠
'DB_PREFIX' => '', // 資料庫表首碼
'DB_PARAMS' => array(), // 資料庫連接參數
'DB_DEBUG' => TRUE, // 資料庫偵錯模式 開啟後可以記錄SQL日誌
'DB_LITE' => false, // 使用資料庫Lite模式
'DB_FIELDS_CACHE' => true, // 啟用欄位緩衝
'DB_CHARSET' => 'utf8', // 資料庫編碼預設採用utf8
'DB_DEPLOY_TYPE' => 0, // 資料庫部署方式:0 集中式(單一伺服器),1 分布式(主從伺服器)
'DB_RW_SEPARATE' => false, // 資料庫讀寫是否分離 主從式有效
'DB_MASTER_NUM' => 1, // 讀寫分離後 主伺服器數量
'DB_SLAVE_NO' => '', // 指定從伺服器序號
相對3.2.2版本來說,取消了如下設定參數:
複製代碼 代碼如下:
'DB_FIELDTYPE_CHECK' // 3.2.3強制進列欄位類型檢測了
'DB_SQL_BUILD_CACHE' // 3.2.3取消了SQL建立緩衝
'DB_SQL_BUILD_QUEUE' // 3.2.3取消了SQL建立緩衝
'DB_SQL_BUILD_LENGTH' // 3.2.3取消了SQL建立緩衝
'DB_SQL_LOG' // 由新增的DB_DEBUG參數取代
'DB_BIND_PARAM' // 新版採用PDO 自動參數綁定 無需設定
新增的資料庫設定參數包括:
複製代碼 代碼如下:
'DB_DEBUG' //用於開啟資料庫偵錯模式,開啟後即可記錄SQL日誌
'DB_LITE' // 是否採用資料庫Lite模式串連 開啟後只能使用原生SQL查詢
3.2.2版本資料庫的偵錯模式和項目的偵錯模式(由APP_DEBUG常量定義)是綁定的 ,3.2.3版本開始資料庫的偵錯模式是獨立設定(由DB_DEBUG參數設定)的。
DB_TYPE參數為資料庫類型設定,目前支援的驅動包括mysql/sqlite/oracle/pgsql/sqlsrv/firebird(其他的資料庫類型需要增加驅動),設定如下:
'DB_TYPE'=>'mysql', // 不再支援設定為PDO 也不再區分mysql和mysqli
複製代碼
資料庫的串連資訊,主要包括下面參數:
複製代碼 代碼如下:
'DB_HOST' => '', // 伺服器位址 採用IP地址
'DB_NAME' => '', // 資料庫名
'DB_USER' => '', // 使用者名稱
'DB_PWD' => '', // 密碼
'DB_PORT' => '', // 連接埠 留空則取預設連接埠
'DB_CHARSET' => '', // 資料庫編碼
以上設定參數會在執行個體化PDO的時候自動轉換為PDO的串連參數傳入。
DB_DSN參數一般無需設定,系統的資料庫驅動會進行預設設定,如果需要調整,請遵循PDO的相關資料庫連接的DSN設定進行設定。
DB_PARAMS用於設定資料庫的串連參數,會傳入PDO執行個體化的第四個參數。
下面是一個典型的資料庫全域設定:
複製代碼 代碼如下:
'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, // 資料庫偵錯模式 開啟後可以記錄SQL日誌
如果在模型類中設定單獨的資料庫連接資訊connection屬性,可以使用下面的數組或者字串方式:
複製代碼 代碼如下:
//在模型裡單獨設定資料庫連接資訊
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',
);
}
注意:在模型中設定的資料庫連接設定參數採用全域配置的小寫名。
或者採用字串方式定義,格式為:
資料庫類型://使用者名稱:密碼@資料庫地址:資料庫連接埠/資料庫名#字元集
例如:
複製代碼 代碼如下:
//在模型裡單獨設定資料庫連接資訊
namespace Home\Model;
use Think\Model;
class UserModel extends Model{
// 使用字串方式定義
protected $connection = 'mysql://root:1234@192.168.1.10:3306/thinkphp#utf8';
}
也可以通過設定檔設定,例如:
複製代碼 代碼如下:
//資料庫配置1
'DB_CONFIG1' => 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',
),
//資料庫配置2
'DB_CONFIG2' => 'mysql://root:1234@192.168.1.10:3306/thinkphp#utf8';
然後在模型裡面定義:
複製代碼 代碼如下:
//在模型裡單獨設定資料庫連接資訊
namespace Home\Model;
use Think\Model;
class UserModel extends Model{
//調用設定檔中的資料庫配置1
protected $connection = 'DB_CONFIG1';
// 或者
protected $connection = 'DB_CONFIG2';
}
除了在模型定義的時候指定資料庫連接資訊外,我們還可以在執行個體化的時候指定資料庫連接資訊,如果採用的是M方法執行個體化模型的話,也可以支援傳入不同的資料庫連接資訊,例如:
複製代碼 代碼如下:
$User = M('User','other_','mysql://root:1234@192.168.1.10/demo#utf8');
表示執行個體化User模型,串連的是demo資料庫的other_user表,採用的串連資訊是第三個參數配置的。
如果我們在項目設定檔中已經配置了DB_CONFIG2的話,也可以採用:
$User = M('User','other_','DB_CONFIG2');
以上就是本文的全部內容了,希望大家能夠喜歡。
http://www.bkjia.com/PHPjc/963838.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/963838.htmlTechArticleThinkPHP3.2.3資料庫設定新特性,thinkphp3.2.3 ThinkPHP3.2.3版本資料庫驅動採用PDO完全重寫,配置和使用上面也比之前版本更加靈活和強大,我們來...