PHP同時(shí)連接多個(gè)mysql數(shù)據(jù)庫示例代碼
更新時(shí)間:2014年03月17日 11:41:18 作者:
這篇文章主要介紹了PHP同時(shí)連接多個(gè)mysql數(shù)據(jù)庫的具體實(shí)現(xiàn),需要的朋友可以參考下
實(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 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í)行時(shí)會報(bào)錯(cuò):PHP Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in ....
原因分析:
程序開始建立兩個(gè)數(shù)據(jù)庫鏈接,函數(shù)mysql_query()原型:
resource mysql_query ( string $query [, resource $link_identifier ] )
向與指定的連接標(biāo)識符關(guān)聯(lián)的服務(wù)器中的當(dāng)前活動(dòng)數(shù)據(jù)庫發(fā)送一條查詢。如果沒有指定 link_identifier,則使用上一個(gè)打開的連接。如果沒有打開的連接,本函數(shù)會嘗試無參數(shù)調(diào)用 mysql_connect() 函數(shù)來建立一個(gè)連接并使用之。查詢結(jié)果會被緩存。
在本例中由于沒有指定link_identifier,所以,在執(zhí)行第一條sql時(shí),默認(rèn)使用的是上一個(gè)打開的鏈接,即$conn2,而實(shí)際上第一條sql語句應(yīng)該使用的是$conn1,所以導(dǎo)致報(bào)錯(cuò),所以為了能夠鏈接多個(gè)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語句中關(guān)聯(lián)所用數(shù)據(jù)庫,此時(shí)可以省略mysql_query的第二個(gè)參數(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"; //關(guān)聯(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];
?>
復(fù)制代碼 代碼如下:
<?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í)行時(shí)會報(bào)錯(cuò):PHP Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in ....
原因分析:
程序開始建立兩個(gè)數(shù)據(jù)庫鏈接,函數(shù)mysql_query()原型:
resource mysql_query ( string $query [, resource $link_identifier ] )
向與指定的連接標(biāo)識符關(guān)聯(lián)的服務(wù)器中的當(dāng)前活動(dòng)數(shù)據(jù)庫發(fā)送一條查詢。如果沒有指定 link_identifier,則使用上一個(gè)打開的連接。如果沒有打開的連接,本函數(shù)會嘗試無參數(shù)調(diào)用 mysql_connect() 函數(shù)來建立一個(gè)連接并使用之。查詢結(jié)果會被緩存。
在本例中由于沒有指定link_identifier,所以,在執(zhí)行第一條sql時(shí),默認(rèn)使用的是上一個(gè)打開的鏈接,即$conn2,而實(shí)際上第一條sql語句應(yīng)該使用的是$conn1,所以導(dǎo)致報(bào)錯(cuò),所以為了能夠鏈接多個(gè)mysql數(shù)據(jù)庫,可以使用如下方法:
方法1:在mysql_query函數(shù)中指定所用連接,即:
復(fù)制代碼 代碼如下:
<?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語句中關(guān)聯(lián)所用數(shù)據(jù)庫,此時(shí)可以省略mysql_query的第二個(gè)參數(shù),即:
復(fù)制代碼 代碼如下:
<?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"; //關(guān)聯(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];
?>
相關(guān)文章
thinkPHP5實(shí)現(xiàn)的查詢數(shù)據(jù)庫并返回json數(shù)據(jù)實(shí)例
這篇文章主要介紹了thinkPHP5實(shí)現(xiàn)的查詢數(shù)據(jù)庫并返回json數(shù)據(jù)功能,結(jié)合實(shí)例形式分析了thinkPHP5數(shù)據(jù)庫查詢及json格式數(shù)據(jù)簡單操作技巧,需要的朋友可以參考下2017-10-10關(guān)于訪問控制的一首PHP面試題(對屬性或方法的訪問控制)
對屬性或方法的訪問控制,是通過在前面添加關(guān)鍵字 public、protected 或 private 來實(shí)現(xiàn)的2012-09-09php讀取文件內(nèi)容至字符串中,同時(shí)去除換行、空行、行首行尾空格(Zjmainstay原創(chuàng))
讀取文件內(nèi)容至字符串中,同時(shí)去除換行、行首行尾空格,原理不錯(cuò),需要的朋友可以參考下2012-07-07PHP中filter函數(shù)校驗(yàn)數(shù)據(jù)的方法詳解
這篇文章主要是介紹PHP中filter函數(shù)校驗(yàn)數(shù)據(jù)的方法詳解,PHP過濾器包含兩種類型:Validation用來驗(yàn)證驗(yàn)證項(xiàng)是否合法 、Sanitization用來格式化被驗(yàn)證的項(xiàng)目,因此它可能會修改驗(yàn)證項(xiàng)的值,將不合法的字符刪除,需要的朋友可以參考下2015-07-07php實(shí)現(xiàn)常見圖片格式的水印和縮略圖制作(面向?qū)ο?
這篇文章主要介紹了php實(shí)現(xiàn)常見圖片格式j(luò)pg,png,gif的水印和縮略圖制作,使用面向?qū)ο蠓椒▽?shí)現(xiàn)PHP圖片水印和縮略圖功能,感興趣的小伙伴們可以參考一下2016-06-06php獲取遠(yuǎn)程圖片的兩種 CURL方式和sockets方式獲取遠(yuǎn)程圖片
php獲取遠(yuǎn)程圖片的兩種:CURL方式和sockets方式獲取遠(yuǎn)程圖片,需要的朋友可以參考下。2011-11-11Windows環(huán)境下安裝PHP Pear的方法圖文教程
這篇文章主要介紹了Windows環(huán)境下安裝PHP Pear的方法,結(jié)合圖文形式詳細(xì)說明了Windows環(huán)境下安裝PHP Pear的相關(guān)命令與操作技巧,需要的朋友可以參考下2019-07-07