ThinkPHP3.2.3數(shù)據(jù)庫設(shè)置新特性
來源:易賢網(wǎng) 閱讀:774 次 日期:2015-03-09 15:59:29
溫馨提示:易賢網(wǎng)小編為您整理了“ThinkPHP3.2.3數(shù)據(jù)庫設(shè)置新特性”,方便廣大網(wǎng)友查閱!

前篇文章,我們總結(jié)了下ThinkPHP3.2中所產(chǎn)生的新變化,本文我們來詳細(xì)看下關(guān)于數(shù)據(jù)庫這塊有哪些新特性,非常細(xì)致,有需要的小伙伴參考下。

ThinkPHP3.2.3版本數(shù)據(jù)庫驅(qū)動(dòng)采用PDO完全重寫,配置和使用上面也比之前版本更加靈活和強(qiáng)大,我們來了解下如何使用。

首先,3.2.3的數(shù)據(jù)庫配置信息有所調(diào)整,完整的數(shù)據(jù)庫設(shè)置包括:

代碼如下:

/* 數(shù)據(jù)庫設(shè)置 */

'DB_TYPE' => '', // 數(shù)據(jù)庫類型

'DB_HOST' => '', // 服務(wù)器地址

'DB_NAME' => '', // 數(shù)據(jù)庫名

'DB_USER' => '', // 用戶名

'DB_PWD' => '', // 密碼

'DB_PORT' => '', // 端口

'DB_PREFIX' => '', // 數(shù)據(jù)庫表前綴

'DB_PARAMS' => array(), // 數(shù)據(jù)庫連接參數(shù)

'DB_DEBUG' => TRUE, // 數(shù)據(jù)庫調(diào)試模式 開啟后可以記錄SQL日志

'DB_LITE' => false, // 使用數(shù)據(jù)庫Lite模式

'DB_FIELDS_CACHE' => true, // 啟用字段緩存

'DB_CHARSET' => 'utf8', // 數(shù)據(jù)庫編碼默認(rèn)采用utf8

'DB_DEPLOY_TYPE' => 0, // 數(shù)據(jù)庫部署方式:0 集中式(單一服務(wù)器),1 分布式(主從服務(wù)器)

'DB_RW_SEPARATE' => false, // 數(shù)據(jù)庫讀寫是否分離 主從式有效

'DB_MASTER_NUM' => 1, // 讀寫分離后 主服務(wù)器數(shù)量

'DB_SLAVE_NO' => '', // 指定從服務(wù)器序號(hào)

相對(duì)3.2.2版本來說,取消了如下設(shè)置參數(shù):

代碼如下:

'DB_FIELDTYPE_CHECK' // 3.2.3強(qiáng)制進(jìn)行字段類型檢測了

'DB_SQL_BUILD_CACHE' // 3.2.3取消了SQL創(chuàng)建緩存

'DB_SQL_BUILD_QUEUE' // 3.2.3取消了SQL創(chuàng)建緩存

'DB_SQL_BUILD_LENGTH' // 3.2.3取消了SQL創(chuàng)建緩存

'DB_SQL_LOG' // 由新增的DB_DEBUG參數(shù)取代

'DB_BIND_PARAM' // 新版采用PDO 自動(dòng)參數(shù)綁定 無需設(shè)置

新增的數(shù)據(jù)庫設(shè)置參數(shù)包括:

代碼如下:

'DB_DEBUG' //用于開啟數(shù)據(jù)庫調(diào)試模式,開啟后即可記錄SQL日志

'DB_LITE' // 是否采用數(shù)據(jù)庫Lite模式連接 開啟后只能使用原生SQL查詢

3.2.2版本數(shù)據(jù)庫的調(diào)試模式和項(xiàng)目的調(diào)試模式(由APP_DEBUG常量定義)是綁定的 ,3.2.3版本開始數(shù)據(jù)庫的調(diào)試模式是獨(dú)立設(shè)置(由DB_DEBUG參數(shù)設(shè)置)的。

DB_TYPE參數(shù)為數(shù)據(jù)庫類型設(shè)置,目前支持的驅(qū)動(dòng)包括mysql/sqlite/oracle/pgsql/sqlsrv/firebird(其他的數(shù)據(jù)庫類型需要增加驅(qū)動(dòng)),設(shè)置如下:

'DB_TYPE'=>'mysql', // 不再支持設(shè)置為PDO 也不再區(qū)分mysql和mysqli

復(fù)制代碼

數(shù)據(jù)庫的連接信息,主要包括下面參數(shù):

代碼如下:

'DB_HOST' => '', // 服務(wù)器地址 采用IP地址

'DB_NAME' => '', // 數(shù)據(jù)庫名

'DB_USER' => '', // 用戶名

'DB_PWD' => '', // 密碼

'DB_PORT' => '', // 端口 留空則取默認(rèn)端口

'DB_CHARSET' => '', // 數(shù)據(jù)庫編碼

以上設(shè)置參數(shù)會(huì)在實(shí)例化PDO的時(shí)候自動(dòng)轉(zhuǎn)換為PDO的連接參數(shù)傳入。

DB_DSN參數(shù)一般無需設(shè)置,系統(tǒng)的數(shù)據(jù)庫驅(qū)動(dòng)會(huì)進(jìn)行默認(rèn)設(shè)置,如果需要調(diào)整,請(qǐng)遵循PDO的相關(guān)數(shù)據(jù)庫連接的DSN設(shè)置進(jìn)行設(shè)置。

DB_PARAMS用于設(shè)置數(shù)據(jù)庫的連接參數(shù),會(huì)傳入PDO實(shí)例化的第四個(gè)參數(shù)。

下面是一個(gè)典型的數(shù)據(jù)庫全局設(shè)置:

代碼如下:

'DB_TYPE' => 'mysql', // 數(shù)據(jù)庫類型

'DB_HOST' => '192.168.1.10', // 服務(wù)器地址

'DB_NAME' => 'thinkphp', // 數(shù)據(jù)庫名

'DB_USER' => 'root', // 用戶名

'DB_PWD' => '1234', // 密碼

'DB_PORT' => '3306', // 端口

'DB_PREFIX' => 'think_', // 數(shù)據(jù)庫表前綴

'DB_CHARSET' => 'utf8', // 數(shù)據(jù)庫編碼

'DB_DEBUG' => TRUE, // 數(shù)據(jù)庫調(diào)試模式 開啟后可以記錄SQL日志

如果在模型類中設(shè)置單獨(dú)的數(shù)據(jù)庫連接信息connection屬性,可以使用下面的數(shù)組或者字符串方式:

代碼如下:

//在模型里單獨(dú)設(shè)置數(shù)據(jù)庫連接信息

namespace Home\Model;

use Think\Model;

class UserModel extends Model{

// 采用數(shù)組方式定義

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',

);

}

注意:在模型中設(shè)置的數(shù)據(jù)庫連接設(shè)置參數(shù)采用全局配置的小寫名。

或者采用字符串方式定義,格式為:

數(shù)據(jù)庫類型://用戶名:密碼@數(shù)據(jù)庫地址:數(shù)據(jù)庫端口/數(shù)據(jù)庫名#字符集

例如:

代碼如下:

//在模型里單獨(dú)設(shè)置數(shù)據(jù)庫連接信息

namespace Home\Model;

use Think\Model;

class UserModel extends Model{

// 使用字符串方式定義

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

}

也可以通過配置文件設(shè)置,例如:

代碼如下:

//數(shù)據(jù)庫配置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',

),

//數(shù)據(jù)庫配置2

'DB_CONFIG2' => 'mysql://root:1234@192.168.1.10:3306/thinkphp#utf8';

然后在模型里面定義:

代碼如下:

//在模型里單獨(dú)設(shè)置數(shù)據(jù)庫連接信息

namespace Home\Model;

use Think\Model;

class UserModel extends Model{

//調(diào)用配置文件中的數(shù)據(jù)庫配置1

protected $connection = 'DB_CONFIG1';

// 或者

protected $connection = 'DB_CONFIG2';

}

除了在模型定義的時(shí)候指定數(shù)據(jù)庫連接信息外,我們還可以在實(shí)例化的時(shí)候指定數(shù)據(jù)庫連接信息,如果采用的是M方法實(shí)例化模型的話,也可以支持傳入不同的數(shù)據(jù)庫連接信息,例如:

代碼如下:

$User = M('User','other_','mysql://root:1234@192.168.1.10/demo#utf8');

表示實(shí)例化User模型,連接的是demo數(shù)據(jù)庫的other_user表,采用的連接信息是第三個(gè)參數(shù)配置的。

如果我們?cè)陧?xiàng)目配置文件中已經(jīng)配置了DB_CONFIG2的話,也可以采用:

$User = M('User','other_','DB_CONFIG2');

以上就是本文的全部內(nèi)容了,希望大家能夠喜歡。

更多信息請(qǐng)查看IT技術(shù)專欄

更多信息請(qǐng)查看網(wǎng)絡(luò)編程
易賢網(wǎng)手機(jī)網(wǎng)站地址:ThinkPHP3.2.3數(shù)據(jù)庫設(shè)置新特性
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國考·省考課程試聽報(bào)名

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)