中文字幕日韩一区二区_国产一区二区av_国产毛片av_久久久久国产一区_色婷婷电影_国产一区二区精品

ThinkPHP實(shí)現(xiàn)多數(shù)據(jù)庫(kù)連接的解決方法

Thinkphp實(shí)現(xiàn)連接多個(gè)數(shù)據(jù)的時(shí)候,如果數(shù)據(jù)庫(kù)在同一個(gè)服務(wù)器里的話只需要這樣定義模型:

class MembersModel extends Model{protected $trueTableName = 'members.members'; //數(shù)據(jù)庫(kù)名.表名(包含了前綴)}

然后就可以像D("Members");這樣實(shí)例化模型,像普通模型那樣操作了。
但后來(lái)發(fā)現(xiàn)他的數(shù)據(jù)庫(kù)在兩個(gè)不同的服務(wù)器,這樣上面的方法就不行了。
這時(shí)候就需要使用TP的多數(shù)據(jù)連接特性了。

對(duì)此,查閱官方文檔進(jìn)行測(cè)試并修正之后得出了如下的解決方法:

要建立多數(shù)據(jù)連接,首先要構(gòu)造數(shù)據(jù)庫(kù)配置參數(shù)。但是如果每次都在建立多數(shù)據(jù)庫(kù)連接的時(shí)候都建立數(shù)據(jù)庫(kù)配置數(shù)組,這樣就會(huì)很麻煩,還不如寫在配置文件里。這里怎么寫還是需要有點(diǎn)技巧的。

<?php$config=  array('DEBUG_MODE'=>true,'default_module'=>'Index','ROUTER_ON'=>TRUE,'DATA_RESULT_TYPE'=>1,'SHOW_RUN_TIME'=>true,      // 運(yùn)行時(shí)間顯示'SHOW_ADV_TIME'=>true,      // 顯示詳細(xì)的運(yùn)行時(shí)間'SHOW_DB_TIMES'=>true,      // 顯示數(shù)據(jù)庫(kù)查詢和寫入次數(shù)'SHOW_CACHE_TIMES'=>true,    // 顯示緩存操作次數(shù)'SHOW_USE_MEM'=>true,      // 顯示內(nèi)存開(kāi)銷'HTML_FILE_SUFFIX'=>'.shtml',   // 默認(rèn)靜態(tài)文件后綴'HTML_CACHE_ON'  =>false,     // 默認(rèn)關(guān)閉靜態(tài)緩存'HTML_CACHE_TIME'=>60,     // 靜態(tài)緩存有效期'HTML_READ_TYPE'=>1,      // 靜態(tài)緩存讀取方式 0 readfile 1 redirect'HTML_URL_SUFFIX'=>'.shtml',  // 偽靜態(tài)后綴設(shè)置//默認(rèn)數(shù)據(jù)庫(kù)鏈接'DB_TYPE'=>'mysql','DB_HOST'=>'localhost','DB_NAME'=>'news','DB_USER'=>'root','DB_PWD'=>'123','DB_PORT'=>'3306','DB_PREFIX'=>'news_',//我的第一個(gè)數(shù)據(jù)庫(kù)連接'DB_BBS'=>array('dbms' => 'mysql','username' => 'discuz','password' => '123','hostname' => 'localhost','hostport' => '3306','database' => 'discuz'),//第二個(gè)數(shù)據(jù)庫(kù)鏈接,'DB_NEWS'=>array('dbms'=>'mysql','username'=>'root','password'=>'123','hostname'=>'localhost','hostport'=>'3306','database'=>'news'));return $config;?>

至此我們就可以用C("DB_BBS")和C("DB_NEWS")來(lái)得到數(shù)據(jù)庫(kù)的配置數(shù)組。
配置好了,現(xiàn)在需要實(shí)例化模型。因?yàn)槲覀冞@個(gè)模型需使用兩個(gè)不同的數(shù)據(jù)庫(kù)的連接,項(xiàng)目的配置文件里默認(rèn)了個(gè)數(shù)據(jù)庫(kù)配置,如果你建立了某個(gè)表的模型比如UserModel.class.php
如果你用D("User");但假如當(dāng)前默認(rèn)的數(shù)據(jù)庫(kù)里沒(méi)User個(gè)表的話就會(huì)報(bào)錯(cuò)。所以我們要建立個(gè)空模型。空模型是不會(huì)選表的。
有兩種方法建立空模型。$dao=D();和$dao=new Model();都可以。

$dao=D();

實(shí)例化模型后,我們需要增加數(shù)據(jù)庫(kù)模型;

$dao->addConnect(C("DB_BBS"),1,true);$dao->addConnect(C("DB_NEWS"),2,true);

說(shuō)一下這個(gè)addConnect();這個(gè)函數(shù)的原型在1.0.3和1.0.4是有區(qū)別的。
在1.0.3的原型是:

boolean addConnect (mixed $config, mixed $linkNum, [boolean $eqType = true])

在1.0.4的原型是:

boolean addConnect (mixed $config, mixed $linkNum)

少了第三個(gè)參數(shù)。
第一個(gè)參數(shù)是數(shù)據(jù)庫(kù)的配置數(shù)組,第二個(gè)參數(shù)是添加的連接的編號(hào),這個(gè)編號(hào)在切換數(shù)據(jù)庫(kù)連接的時(shí)候需要給出是那個(gè)序號(hào)的連接。注意內(nèi)置的數(shù)據(jù)庫(kù)連接序號(hào)是0,所以額外的數(shù)據(jù)庫(kù)連接序號(hào)應(yīng)該從1開(kāi)始.第三個(gè)參數(shù)是 如果兩個(gè)數(shù)據(jù)庫(kù)是否是相同的連接,是就是true;

添加完數(shù)據(jù)庫(kù)連接后,就可以隨時(shí)切換數(shù)據(jù)庫(kù)連接了。比如我們這要用DB_NEWS這個(gè)數(shù)據(jù)庫(kù),就這么寫:

$dao->switchConnect(2);

因?yàn)檫@里只是建立了數(shù)據(jù)庫(kù)的連接,并沒(méi)有選表,所以接下來(lái)需要選表。
注意這里的表名是全名,即表的前綴加表名。因?yàn)槲覀冊(cè)谶B接數(shù)據(jù)庫(kù)的配置數(shù)組里沒(méi)前綴。我覺(jué)得應(yīng)該可以定義,但我不知道。現(xiàn)在就這樣了。

$dao->table("cdb_members");

之后就可以像普通模型一樣的用這個(gè)模型了。
比如我要查詢傳遞過(guò)來(lái)的ID的用戶的所有信息 :

$map=array("id"=>$_GET["id"]);$res=$dao->find($map);

可以看看查詢是否成功了。

dump($res);

如果你現(xiàn)在要用DB_BBS的數(shù)據(jù)庫(kù)的表,只需再切換一次連接;

$dao->switchConnect(2);

然后再選表查詢。記住,切換模型后一定要再選一次表,不然會(huì)出錯(cuò)。
之后又可以像普通模型那樣操作了。
下面針對(duì)手冊(cè)指出里面存在的幾處問(wèn)題:

1.實(shí)例化多數(shù)據(jù)庫(kù)連接的時(shí)候建立了個(gè)非空的模型。(好像還寫錯(cuò)了。)這樣可能會(huì)出錯(cuò)。建議建立空模型;
2.addConnect()的參數(shù)在不同的版本是不同的,手冊(cè)中沒(méi)寫出來(lái);
3.建立了空模型后需要選表,這個(gè)手冊(cè)里沒(méi)有。

針對(duì)以上幾點(diǎn),Thinkphp使用者可以根據(jù)版本的不同酌情進(jìn)行相應(yīng)的調(diào)整。

php技術(shù)ThinkPHP實(shí)現(xiàn)多數(shù)據(jù)庫(kù)連接的解決方法,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 午夜电影网站 | 日韩一区二区三区在线视频 | 午夜精品久久久 | 欧美中文字幕 | 国产ts人妖系列高潮 | 龙珠z在线观看 | 久久精品国产一区 | 欧美一区二区三区精品 | 日韩av在线一区二区 | 国产视频一区二区三区四区五区 | 一a一片一级一片啪啪 | 久草视频网站 | 欧美日韩一区二区在线观看 | 久久久久久成人 | 日韩av手机在线观看 | 国内自拍第一页 | 亚洲一区二区视频在线观看 | 亚洲91视频 | 日韩亚洲欧美综合 | 秋霞国产| 涩涩视频网 | 一级黄色影片在线观看 | 奇米四色在线观看 | 亚洲精品电影网在线观看 | 国产精品视频久久久 | 亚洲综合国产 | 国产成人网| 免费精品 | 久久久久久久久毛片 | 午夜影院网站 | 精品国产乱码久久久久久88av | 成人在线视频网站 | 国产精品久久国产精品99 gif | 亚洲天堂999| 欧美一区二区 | 一区二区视频在线 | 超碰在线免费av | 日干夜干| 精产国产伦理一二三区 | 国产资源在线观看 | 国产精品资源在线 |