亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

ThinkPHP實現多數據庫連接的解決方法

2024-05-04 23:24:18
字體:
來源:轉載
供稿:網友

ThinkPHP實現連接多個數據的時候,如果數據庫在同一個服務器里的話只需要這樣定義模型:

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

然后就可以像D("Members");這樣實例化模型,像普通模型那樣操作了。
但后來發現他的數據庫在兩個不同的服務器,這樣上面的方法就不行了。
這時候就需要使用TP的多數據連接特性了。

對此,查閱官方文檔進行測試并修正之后得出了如下的解決方法:

要建立多數據連接,首先要構造數據庫配置參數。但是如果每次都在建立多數據庫連接的時候都建立數據庫配置數組,這樣就會很麻煩,還不如寫在配置文件里。這里怎么寫還是需要有點技巧的。

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

至此我們就可以用C("DB_BBS")和C("DB_NEWS")來得到數據庫的配置數組。
配置好了,現在需要實例化模型。因為我們這個模型需使用兩個不同的數據庫的連接,項目的配置文件里默認了個數據庫配置,如果你建立了某個表的模型比如UserModel.class.php,
如果你用D("User");但假如當前默認的數據庫里沒User個表的話就會報錯。所以我們要建立個空模型。空模型是不會選表的。
有兩種方法建立空模型。$dao=D();和$dao=new Model();都可以。

$dao=D();

實例化模型后,我們需要增加數據庫模型;

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

說一下這個addConnect();這個函數的原型在1.0.3和1.0.4是有區別的。
在1.0.3的原型是:

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

在1.0.4的原型是:

boolean addConnect (mixed $config, mixed $linkNum)

少了第三個參數。
第一個參數是數據庫的配置數組,第二個參數是添加的連接的編號,這個編號在切換數據庫連接的時候需要給出是那個序號的連接。注意內置的數據庫連接序號是0,所以額外的數據庫連接序號應該從1開始.第三個參數是 如果兩個數據庫是否是相同的連接,是就是true;

添加完數據庫連接后,就可以隨時切換數據庫連接了。比如我們這要用DB_NEWS這個數據庫,就這么寫:

$dao->switchConnect(2);

因為這里只是建立了數據庫的連接,并沒有選表,所以接下來需要選表。
注意這里的表名是全名,即表的前綴加表名。因為我們在連接數據庫的配置數組里沒前綴。我覺得應該可以定義,但我不知道?,F在就這樣了。

$dao->table("cdb_members");

之后就可以像普通模型一樣的用這個模型了。
比如我要查詢傳遞過來的ID的用戶的所有信息 :

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

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

dump($res);

如果你現在要用DB_BBS的數據庫的表,只需再切換一次連接;

$dao->switchConnect(2);

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

1.實例化多數據庫連接的時候建立了個非空的模型。(好像還寫錯了。)這樣可能會出錯。建議建立空模型;
2.addConnect()的參數在不同的版本是不同的,手冊中沒寫出來;
3.建立了空模型后需要選表,這個手冊里沒有。

針對以上幾點,ThinkPHP使用者可以根據版本的不同酌情進行相應的調整。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲美女视频网| 国产福利视频一区| 91精品国产高清久久久久久久久| 亚洲一区第一页| 亚洲无限av看| 日韩免费不卡av| 97超碰国产精品女人人人爽| 中文字幕精品国产| 中文字幕av一区二区| 亚洲色图偷窥自拍| 欧美黑人性生活视频| 国产97在线观看| 久久久成人精品视频| 欧美激情2020午夜免费观看| 成人在线精品视频| 中文字幕av一区中文字幕天堂| 91精品久久久久久久久中文字幕| 亚洲一区二区三区视频| 日韩欧美精品中文字幕| 一区二区在线视频播放| 在线观看国产成人av片| 日韩美女福利视频| 在线观看欧美日韩国产| 操日韩av在线电影| 欧美激情一区二区三区在线视频观看| 国产精品h片在线播放| 国产高清在线不卡| 国产激情久久久久| 韩国一区二区电影| 国产精品日韩在线| 亚洲精品视频在线观看视频| 亚洲色图激情小说| 亚洲欧洲在线观看| 精品国产视频在线| 亚洲韩国欧洲国产日产av| 成人激情视频在线播放| 亚洲午夜性刺激影院| 日韩在线一区二区三区免费视频| 俺也去精品视频在线观看| 欧美精品videos性欧美| 国产精品mp4| 欧美日韩国产成人| 欧美黑人巨大xxx极品| 亚洲另类欧美自拍| 国产日韩欧美91| 欧美精品精品精品精品免费| 亚洲午夜av久久乱码| 亚洲性av网站| 69久久夜色精品国产7777| 久久精品一偷一偷国产| 91在线免费看网站| 伊人久久久久久久久久久久久| 精品亚洲国产视频| 日韩在线观看免费| 亚洲三级av在线| 中文字幕亚洲综合久久| 最新的欧美黄色| 国产精品久久99久久| 欧美丰满片xxx777| 欧美日韩国产综合视频在线观看中文| 国产精品久久久久久搜索| 蜜月aⅴ免费一区二区三区| 日韩成人高清在线| 色偷偷888欧美精品久久久| 国内自拍欧美激情| 国语自产精品视频在线看抢先版图片| 蜜臀久久99精品久久久无需会员| 日韩电影中文 亚洲精品乱码| 成人亚洲欧美一区二区三区| 亚州欧美日韩中文视频| 日本一欧美一欧美一亚洲视频| 国产精品午夜一区二区欲梦| 国产97在线|日韩| 欧美性xxxx18| 国产91精品高潮白浆喷水| 亚洲色图在线观看| 欧美日韩亚洲91| 国产成人精品久久亚洲高清不卡| 日韩精品在线私人| 日韩精品极品视频免费观看| 国内精品久久久久影院优| 日韩精品亚洲精品| 国产高清视频一区三区| 国产精品美腿一区在线看| 久久琪琪电影院| 精品日韩美女的视频高清| 欧美又大粗又爽又黄大片视频| 日韩视频免费看| 欧美激情第6页| 亚洲精品小视频在线观看| 亚洲国产另类 国产精品国产免费| 色综合男人天堂| 亚洲第一免费网站| 国产亚洲一区精品| 92福利视频午夜1000合集在线观看| 国产精品对白刺激| 2020欧美日韩在线视频| 欧美精品电影在线| 亚洲影视九九影院在线观看| 中文字幕亚洲一区| 亚洲第一福利网站| 96国产粉嫩美女| 97在线观看视频| 亚洲理论在线a中文字幕| 亚洲mm色国产网站| 国产精品久久电影观看| 97在线看免费观看视频在线观看| 国产精品极品美女在线观看免费| 久久久免费精品视频| 成人福利网站在线观看11| 国产成人av在线播放| 亚洲热线99精品视频| 亚洲成人黄色网址| 尤物九九久久国产精品的分类| 国产一区二区黄| 国产精品视频一区二区三区四| 精品久久久久久中文字幕一区奶水| 欧美日韩一二三四五区| 高清日韩电视剧大全免费播放在线观看| 午夜免费日韩视频| 欧美大人香蕉在线| 麻豆精品精华液| 欧美限制级电影在线观看| 国产欧美一区二区三区在线看| 欧美老肥婆性猛交视频| 欧美性xxxx极品hd满灌| 欧美精品在线观看| 久久国产精品久久国产精品| 欧美成人午夜视频| 日韩电影在线观看永久视频免费网站| 欧美日韩第一视频| 亚洲黄在线观看| 高潮白浆女日韩av免费看| 久久99久国产精品黄毛片入口| 日韩av电影在线免费播放| 91在线视频导航| 精品视频—区二区三区免费| 国产精品视频精品视频| 亚洲成人国产精品| 川上优av一区二区线观看| 91a在线视频| 欧美激情网站在线观看| 亚洲综合小说区| 国产欧美一区二区三区久久人妖| 午夜精品久久久99热福利| 欧美激情在线观看视频| 午夜精品久久久久久久99热浪潮| 亚洲精品自拍偷拍| 欧美性xxxx18| 日韩在线观看免费全| 亚洲欧美国产日韩天堂区| 色综合久久久久久中文网| 夜夜嗨av色一区二区不卡| 国产精品免费一区二区三区都可以| 久久99亚洲精品| 日韩精品免费观看| 最好看的2019年中文视频| 亚洲精品suv精品一区二区| 亚洲欧美中文字幕在线一区| 久久综合久久88| 97超级碰碰碰久久久| 亚洲日本成人女熟在线观看| 日本精品在线视频| 日韩精品在线第一页|