thinkphp 框架數(shù)據(jù)庫(kù)切換實(shí)現(xiàn)方法分析
本文實(shí)例講述了thinkphp 框架數(shù)據(jù)庫(kù)切換實(shí)現(xiàn)方法。分享給大家供大家參考,具體如下:
數(shù)據(jù)庫(kù)配置:
//數(shù)據(jù)庫(kù)配置1 'db_config1' => [ // 數(shù)據(jù)庫(kù)類型 'type' => 'mysql', // 服務(wù)器地址 'hostname' => '127.0.0.1', // 數(shù)據(jù)庫(kù)名 'database' => 'thinkphp', // 數(shù)據(jù)庫(kù)用戶名 'username' => 'root', // 數(shù)據(jù)庫(kù)密碼 'password' => '', // 數(shù)據(jù)庫(kù)編碼默認(rèn)采用utf8 'charset' => 'utf8', // 數(shù)據(jù)庫(kù)表前綴 'prefix' => 'think_', ], //數(shù)據(jù)庫(kù)配置2 'db_config2' => 'mysql://root:1234@localhost:3306/thinkphp#utf8';
//默認(rèn)數(shù)據(jù)庫(kù)讀取數(shù)據(jù) $test = Db::name("test")->select(); //第二個(gè)數(shù)據(jù)庫(kù)讀取數(shù)據(jù) $test1=Db::connect("DB_Config_1")->name("test")->select();
application/config.php
$db1 = [ 'type'=>'mysql', 'hostname'=>'127.0.0.1', 'database'=>'testA', 'username'=>'root', 'password'=>'123456', 'hostport'=>'3306', 'params'=>[], 'charset'=>'utf8', 'prefix'=>'', ], $db2 = [ 'type'=>'mysql', 'hostname'=>'127.0.0.1', atabase'=>'testB', 'username'=>'root', 'password'=>'123456', 'hostport'=>'3306', 'params'=>[], 'charset'=>'utf8', 'prefix'=>'', ], Db::connect('db1')->query('select * from user where age=25');
方法配置
我們可以在調(diào)用Db類的時(shí)候動(dòng)態(tài)定義連接信息,例如:
Db::connect([ // 數(shù)據(jù)庫(kù)類型 'type' => 'mysql', // 數(shù)據(jù)庫(kù)連接DSN配置 'dsn' => '', // 服務(wù)器地址 'hostname' => '127.0.0.1', // 數(shù)據(jù)庫(kù)名 'database' => 'thinkphp', // 數(shù)據(jù)庫(kù)用戶名 'username' => 'root', // 數(shù)據(jù)庫(kù)密碼 'password' => '', // 數(shù)據(jù)庫(kù)連接端口 'hostport' => '', // 數(shù)據(jù)庫(kù)連接參數(shù) 'params' => [], // 數(shù)據(jù)庫(kù)編碼默認(rèn)采用utf8 'charset' => 'utf8', // 數(shù)據(jù)庫(kù)表前綴 'prefix' => 'think_', ]);
或者使用字符串方式:
Db::connect('mysql://root:1234@127.0.0.1:3306/thinkphp#utf8');
字符串連接的定義格式為:
數(shù)據(jù)庫(kù)類型://用戶名:密碼@數(shù)據(jù)庫(kù)地址:數(shù)據(jù)庫(kù)端口/數(shù)據(jù)庫(kù)名#字符集
注意:字符串方式可能無(wú)法定義某些參數(shù),例如前綴和連接參數(shù)。
如果我們已經(jīng)在應(yīng)用配置文件(注意這里不是數(shù)據(jù)庫(kù)配置文件)中配置了額外的數(shù)據(jù)庫(kù)連接信息,例如:
//數(shù)據(jù)庫(kù)配置1 'db_config1' => [ // 數(shù)據(jù)庫(kù)類型 'type' => 'mysql', // 服務(wù)器地址 'hostname' => '127.0.0.1', // 數(shù)據(jù)庫(kù)名 'database' => 'thinkphp', // 數(shù)據(jù)庫(kù)用戶名 'username' => 'root', // 數(shù)據(jù)庫(kù)密碼 'password' => '', // 數(shù)據(jù)庫(kù)編碼默認(rèn)采用utf8 'charset' => 'utf8', // 數(shù)據(jù)庫(kù)表前綴 'prefix' => 'think_', ], //數(shù)據(jù)庫(kù)配置2 'db_config2' => 'mysql://root:1234@localhost:3306/thinkphp#utf8';
我們可以改成
Db::connect('db_config1'); Db::connect('db_config2');
database.php是框架默認(rèn)的數(shù)據(jù)庫(kù)配置,里面寫數(shù)據(jù)庫(kù)1的信息,新建了個(gè)database2.php是放置數(shù)據(jù)庫(kù)2的信息。
創(chuàng)建完數(shù)據(jù)庫(kù)2之后,在config配置文件里,文件最后引入數(shù)據(jù)庫(kù)2的配置信息
$db_con2 = require_once ('database2.php'), 'db_con2' => $db_con2,
代碼中引用:
選擇數(shù)據(jù)庫(kù)1的時(shí)候,我是用模型查詢的直接寫SQL語(yǔ)句:
//模型查詢 $user = new User(); $result = $user->where('username', $data['username']) ->where('password', $data['password']) ->find();
或者
User::where('id','1')->find(); //普通結(jié)構(gòu)查詢 Db::table('think_user')->where('id',1)->find();
查詢數(shù)據(jù)庫(kù)2的信息時(shí),調(diào)用普通查詢語(yǔ)句:
$list = Db::connect('db_con2') ->table('nrf_amf_reg_info') ->alias('r') ->join('nrf_amf_server s','r.Id = s.nrf_amf_reg_Id','LEFT') ->paginate();
或者
$list = Db::connect('db_con2')->name('nrf_disc_record')->paginate();
注:nrf_amf_reg_info和nrf_disc_record為表名
更多關(guān)于thinkPHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《ThinkPHP入門教程》、《thinkPHP模板操作技巧總結(jié)》、《ThinkPHP常用方法總結(jié)》、《codeigniter入門教程》、《CI(CodeIgniter)框架進(jìn)階教程》、《Zend FrameWork框架入門教程》及《PHP模板技術(shù)總結(jié)》。
希望本文所述對(duì)大家基于ThinkPHP框架的PHP程序設(shè)計(jì)有所幫助。
- Thinkphp 框架配置操作之動(dòng)態(tài)配置、擴(kuò)展配置及批量配置實(shí)例分析
- Thinkphp 框架配置操作之配置加載與讀取配置實(shí)例分析
- Thinkphp 框架基礎(chǔ)之入口文件功能、定義與用法分析
- Thinkphp 框架基礎(chǔ)之源碼獲取、環(huán)境要求與目錄結(jié)構(gòu)分析
- Thinkphp 框架擴(kuò)展之驅(qū)動(dòng)擴(kuò)展實(shí)例分析
- Thinkphp 框架擴(kuò)展之應(yīng)用模式實(shí)現(xiàn)方法分析
- Thinkphp 框架擴(kuò)展之Widget擴(kuò)展實(shí)現(xiàn)方法分析
- Thinkphp 框架擴(kuò)展之行為擴(kuò)展原理與實(shí)現(xiàn)方法分析
- Thinkphp 框架擴(kuò)展之標(biāo)簽庫(kù)驅(qū)動(dòng)原理與用法分析
- 淺談PHP之ThinkPHP框架使用詳解
相關(guān)文章
PHP全局變量中的global與$GLOBALS的區(qū)別和用法小結(jié)
這篇文章主要介紹了PHP全局變量中的global與$GLOBALS的區(qū)別和用法小結(jié),global的作用就相當(dāng)于傳遞參數(shù),在函數(shù)外部聲明的變量,如果在函數(shù)內(nèi)想要使用,就用global來(lái)聲明該變量,這樣就相當(dāng)于把該變量傳遞進(jìn)來(lái)了,就可以引用該變量了,需要的朋友可以參考下2023-10-10ThinkPHP實(shí)現(xiàn)支付寶接口功能實(shí)例
這篇文章主要介紹了ThinkPHP實(shí)現(xiàn)支付寶接口功能的方法,實(shí)例講述了支付寶接口的下載及二次開發(fā)方法,以及對(duì)應(yīng)的ThinkPHP開發(fā)技巧,需要的朋友可以參考下2014-12-12Bootstrap+PHP實(shí)現(xiàn)多圖上傳功能實(shí)例詳解
這篇文章主要介紹了Bootstrap+PHP實(shí)現(xiàn)多圖上傳功能實(shí)例詳解,本文圖片加實(shí)例相結(jié)合的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下2018-04-04使用PHP?Smarty處理表單數(shù)據(jù)的方法
這篇文章主要介紹了如何使用PHP?Smarty處理表單數(shù)據(jù),首先需要下載Smarty庫(kù)并將其解壓到你的項(xiàng)目,下面通過(guò)本文結(jié)合實(shí)例代碼給大家講解的非常詳細(xì),需要的朋友可以參考下2023-08-08php利用單例模式實(shí)現(xiàn)日志處理類庫(kù)
該日志類利用單例模式,節(jié)省資源。自行判斷文件大小,超出指定大小則按序自行創(chuàng)建文件。2014-02-02