這篇文章主要介紹了PHP同時連接多個mysql數(shù)據(jù)庫的具體實現(xiàn),需要的朋友可以參考下
創(chuàng)新互聯(lián)一直在為企業(yè)提供服務,多年的磨煉,使我們在創(chuàng)意設計,成都營銷網(wǎng)站建設到技術研發(fā)擁有了開發(fā)經(jīng)驗。我們擅長傾聽企業(yè)需求,挖掘用戶對產品需求服務價值,為企業(yè)制作有用的創(chuàng)意設計體驗。核心團隊擁有超過十載以上行業(yè)經(jīng)驗,涵蓋創(chuàng)意,策化,開發(fā)等專業(yè)領域,公司涉及領域有基礎互聯(lián)網(wǎng)服務四川移動機房托管、成都App定制開發(fā)、手機移動建站、網(wǎng)頁設計、網(wǎng)絡整合營銷。
實例:
代碼如下:
?php
$conn1
=
mysql_connect("127.0.0.1",
"root","root","db1");
mysql_select_db("db1",
$conn1);
$conn2
=
mysql_connect("127.0.0.1",
"root","root","db2");
mysql_select_db("db2",
$conn2);
$sql
=
"select
*
from
ip";
$query
=
mysql_query($sql);
if($row
=
mysql_fetch_array($query))
echo
$row[0]."n";
$sql
=
"select
*
from
web
";
$query
=
mysql_query($sql);
if($row
=
mysql_fetch_array($query))
echo
$row[0];
?
這段代碼存在問題,在程序執(zhí)行時會報錯:PHP
Warning:
mysql_fetch_array()
expects
parameter
1
to
be
resource,
boolean
given
in
....
原因分析:
程序開始建立兩個數(shù)據(jù)庫鏈接,函數(shù)mysql_query()原型:
resource
mysql_query
(
string
$query
[,
resource
$link_identifier
]
)
向與指定的連接標識符關聯(lián)的服務器中的當前活動數(shù)據(jù)庫發(fā)送一條查詢。如果沒有指定
link_identifier,則使用上一個打開的連接。如果沒有打開的連接,本函數(shù)會嘗試無參數(shù)調用
mysql_connect()
函數(shù)來建立一個連接并使用之。查詢結果會被緩存。
在本例中由于沒有指定link_identifier,所以,在執(zhí)行第一條sql時,默認使用的是上一個打開的鏈接,即$conn2,而實際上第一條sql語句應該使用的是$conn1,所以導致報錯,所以為了能夠鏈接多個mysql數(shù)據(jù)庫,可以使用如下方法:
方法1:在mysql_query函數(shù)中指定所用連接,即:
代碼如下:
?php
$conn1
=
mysql_connect("127.0.0.1",
"root","root","db1");
mysql_select_db("Muma",
$conn1);
$conn2
=
mysql_connect("127.0.0.1",
"root","root","db2");
mysql_select_db("product",
$conn2);
$sql
=
"select
*
from
ip";
$query
=
mysql_query($sql,$conn1);
//添加連接$conn1
if($row
=
mysql_fetch_array($query))
echo
$row[0]."n";
$sql
=
"select
*
from
web
";
$query
=
mysql_query($sql,
$conn2);
if($row
=
mysql_fetch_array($query))
echo
$row[0];
?
方法2:在sql語句中關聯(lián)所用數(shù)據(jù)庫,此時可以省略mysql_query的第二個參數(shù),即:
代碼如下:
?php
$conn1
=
mysql_connect("127.0.0.1",
"root","root","db1");
mysql_select_db("db1",
$conn1);
$conn2
=
mysql_connect("127.0.0.1",
"root","root","db2");
mysql_select_db("db2",
$conn2);
$sql
=
"select
*
from
db1.ip";
//關聯(lián)數(shù)據(jù)庫
$query
=
mysql_query($sql);
if($row
=
mysql_fetch_array($query))
echo
$row[0]."n";
$sql
=
"select
*
from
db2.web
";
$query
=
mysql_query($sql);
if($row
=
mysql_fetch_array($query))
echo
$row[0];
?
不知道你說的是分布式數(shù)據(jù)庫還是切換式數(shù)據(jù)庫
如果是分布式數(shù)據(jù)話的話可以參考官方手冊:
如果僅僅是數(shù)據(jù)庫切換的話,可以參考官方手冊:
$conn1=mysql_connect('...','...','...'); //將第一個數(shù)據(jù)庫連接資源保存到變量conn1中
$conn2=mysql_connect('...','...','...'); //將第二個數(shù)據(jù)庫連接資源保存到變量conn2中
然后在執(zhí)行查詢操作時,指定使用哪個連接資源,如:mysql_query('select ....',$conn1);
希望可以幫到你,謝謝!
實例化兩條sql鏈接.例如 $wdb = mysql_connect('localhost','root','123456','a1');//負責寫入的數(shù)據(jù)庫$rdb = mysql_connect('192.168.xx.xx','root','123456','a2');//負責讀的數(shù)據(jù)庫這樣就可以鏈接兩個數(shù)據(jù)庫了。