thinkphp可不可以單獨配置新數(shù)據(jù)庫

這篇文章主要講解了“thinkphp可不可以單獨配置新數(shù)據(jù)庫”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“thinkphp可不可以單獨配置新數(shù)據(jù)庫”吧!

創(chuàng)新互聯(lián)專注于元寶山企業(yè)網(wǎng)站建設,成都響應式網(wǎng)站建設,成都做商城網(wǎng)站。元寶山網(wǎng)站建設公司,為元寶山等地區(qū)提供建站服務。全流程定制網(wǎng)站制作,專業(yè)設計,全程項目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務

thinkphp可以單獨配置新數(shù)據(jù)庫,其設置方法是:1、在應用配置文件或者模塊配置文件中添加配置參數(shù)如“'DB_HOST' => 'localhost'...”;2、在不同的應用狀態(tài)的配置文件里面定義獨立的數(shù)據(jù)庫配置信息;3、在實例化的時候指定數(shù)據(jù)庫連接信息,語法如“$User = M('User','other_','MySQL://root...”。

thinkphp可以單獨配置新數(shù)據(jù)庫嗎?

可以。

Thinkphp 模型-連接數(shù)據(jù)庫獨立配置model數(shù)據(jù)庫連接

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

ThinkPHP內(nèi)置了抽象數(shù)據(jù)庫訪問層,把不同的數(shù)據(jù)庫操作封裝起來,我們只需要使用公共的Db類進行操作,而無需針對不同的數(shù)據(jù)庫寫不同的代碼和底層實現(xiàn),Db類會自動調(diào)用相應的數(shù)據(jù)庫驅(qū)動來處理。目前的數(shù)據(jù)庫包括Mysql、SqlServer、PgSQL、Sqlite、Oracle、Ibase、Mongo,也包括對PDO的支持。

如果應用需要使用數(shù)據(jù)庫,必須配置數(shù)據(jù)庫連接信息,數(shù)據(jù)庫的配置文件有多種定義方式。

一、全局配置定義

常用的配置方式是在應用配置文件或者模塊配置文件中添加下面的配置參數(shù):

//數(shù)據(jù)庫配置信息'DB_TYPE' => 'mysql', // 數(shù)據(jù)庫類型
'DB_HOST' => 'localhost', // 服務器地址
'DB_NAME' => 'thinkphp', // 數(shù)據(jù)庫名
'DB_USER' => 'root', // 用戶名
'DB_PWD' => '123456', // 密碼
'DB_PORT' => 3306, // 端口
'DB_PREFIX' => 'think_', // 數(shù)據(jù)庫表前綴
'DB_CHARSET'=> 'utf8', // 字符集

數(shù)據(jù)庫的類型由DB_TYPE參數(shù)設置。

下面是目前支持的數(shù)據(jù)庫設置:

thinkphp可不可以單獨配置新數(shù)據(jù)庫

如果DB_TYPE使用PDO類型的話,數(shù)據(jù)庫類型則由DB_DSN配置決定。

或者采用如下配置

'DB_DSN' => 'mysql://root:123456@localhost:3306/thinkphp#utf8'

使用DB_DSN方式定義可以簡化配置參數(shù),DSN參數(shù)格式為:

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

字符集設置需要3.2.1版本以上有效,字符集如果沒有設置的話,默認為utf8。

如果兩種配置參數(shù)同時存在的話,DB_DSN配置參數(shù)優(yōu)先。

注意:如果要設置分布式數(shù)據(jù)庫,暫時不支持DB_DSN方式配置。

如果采用PDO驅(qū)動的話,則必須首先配置**DB_TYPE **為pdo,然后還需要單獨配置其他參數(shù),例如:

//PDO連接方式
'DB_TYPE' => 'pdo', // 數(shù)據(jù)庫類型
'DB_USER' => 'root', // 用戶名
'DB_PWD' => '', // 密碼
'DB_PREFIX' => 'think_', // 數(shù)據(jù)庫表前綴
'DB_DSN' => 'mysql:host=localhost;dbname=thinkphp;charset=UTF-8'

注意:PDO方式的DB_DSN配置格式有所區(qū)別,根據(jù)不同的數(shù)據(jù)庫類型設置有所不同,具體可以參考PHP手冊。

配置文件定義的數(shù)據(jù)庫連接信息一般是系統(tǒng)默認采用的,因為一般一個應用的數(shù)據(jù)庫訪問配置是相同的。該方法系統(tǒng)在連接數(shù)據(jù)庫的時候會自動獲取,無需手動連接。

可以對每個模塊定義不同的數(shù)據(jù)庫連接信息,如果開啟了調(diào)試模式的話,還可以在不同的應用狀態(tài)的配置文件里面定義獨立的數(shù)據(jù)庫配置信息。

二、模型類定義

如果在某個模型類里面定義了connection屬性的話,則實例化該自定義模型的時候會采用定義的數(shù)據(jù)庫連接信息,而不是配置文件中設置的默認連接信息,通常用于某些數(shù)據(jù)表位于當前數(shù)據(jù)庫連接之外的其它數(shù)據(jù)庫,例如:

//在模型里單獨設置數(shù)據(jù)庫連接信息
namespace Home\ Model;
use Think\ Model;
class UserModel extends Model{
protected $connection = array(
'db_type' => 'mysql',
'db_user' => 'root',
'db_pwd' => '1234',
'db_host' => 'localhost',
'db_port' => '3306',
'db_name' => 'thinkphp',
'db_charset' => 'utf8',
);
}

也可以采用DSN方式定義,例如:

//在模型里單獨設置數(shù)據(jù)庫連接信息
namespace Home\ Model;
use Think\ Model;
class UserModel extends Model{
//或者使用DSN定義
protected $connection = 'mysql://root:1234@localhost:3306/thinkphp#utf8';
}

如果我們已經(jīng)在配置文件中配置了額外的數(shù)據(jù)庫連接信息,例如:

//數(shù)據(jù)庫配置1
'DB_CONFIG1' => array(
'db_type' => 'mysql',
'db_user' => 'root',
'db_pwd' => '1234',
'db_host' => 'localhost',
'db_port' => '3306',
'db_name' => 'thinkphp',
'db_charset'=> 'utf8',
),
//數(shù)據(jù)庫配置2
'DB_CONFIG2' => 'mysql://root:1234@localhost:3306/thinkphp#utf8';

那么,我們可以把模型類的屬性定義改為:

//在模型里單獨設置數(shù)據(jù)庫連接信息
namespace Home\ Model;
use Think\ Model;
class UserModel extends Model{
//調(diào)用配置文件中的數(shù)據(jù)庫配置1
protected $connection = 'DB_CONFIG1';
}
//在模型里單獨設置數(shù)據(jù)庫連接信息
namespace Home\ Model;
use Think\ Model;
class InfoModel extends Model{
//調(diào)用配置文件中的數(shù)據(jù)庫配置1
protected $connection = 'DB_CONFIG2';
}

三、實例化定義

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

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

表示實例化User模型,連接的是demo數(shù)據(jù)庫的other_user表,采用的連接信息是第三個參數(shù)配置的。如果我們在項目配置文件中已經(jīng)配置了DB_CONFIG2的話,也可以采用:

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

需要注意的是,ThinkPHP的數(shù)據(jù)庫連接的惰性的,所以并不是在實例化的時候就連接數(shù)據(jù)庫,而是在有實際的數(shù)據(jù)操作的時候才會去連接數(shù)據(jù)庫(額外的情況是,在系統(tǒng)第一次實例化模型的時候,會自動連接數(shù)據(jù)庫獲取相關(guān)模型類對應的數(shù)據(jù)表的字段信息)。

感謝各位的閱讀,以上就是“thinkphp可不可以單獨配置新數(shù)據(jù)庫”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對thinkphp可不可以單獨配置新數(shù)據(jù)庫這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

文章名稱:thinkphp可不可以單獨配置新數(shù)據(jù)庫
當前網(wǎng)址:http://muchs.cn/article18/iepcdp.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設計公司、品牌網(wǎng)站建設、企業(yè)網(wǎng)站制作、建站公司、網(wǎng)頁設計公司、Google

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應式網(wǎng)站建設