PHP同時連接多個mysql數據庫示例代碼

實例: 

代碼如下:

<?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]; 
?>


這段代碼存在問題,在程序執行時會報錯:PHP Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in .... 

原因分析: 

程序開始建立兩個數據庫鏈接,函數mysql_query()原型: 

resource mysql_query ( string $query [, resource $link_identifier ] ) 

向與指定的連接標識符關聯的服務器中的當前活動數據庫發送一條查詢。如果沒有指定 link_identifier,則使用上一個打開的連接。如果沒有打開的連接,本函數會嘗試無參數調用 mysql_connect() 函數來建立一個連接並使用之。查詢結果會被緩存。 

在本例中由於沒有指定link_identifier,所以,在執行第一條sql時,默認使用的是上一個打開的鏈接,即$conn2,而實際上第一條sql語句應該使用的是$conn1,所以導致報錯,所以爲了能夠鏈接多個mysql數據庫,可以使用如下方法: 

方法1:在mysql_query函數中指定所用連接,即: 

代碼如下:

<?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語句中關聯所用數據庫,此時可以省略mysql_query的第二個參數,即: 

代碼如下:

<?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"; 
//關聯數據庫 
$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]; 
?>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章