PHP同时链接多个mysql数据库示例代码

实例: 
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函数中指定所用链接,即: 
web

代码以下:sql

<?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]; 
?>
相关文章
相关标签/搜索