可能重复:
How do you connect to multiple MySQL databases on a single webpage?
如果我想连接到一个db做一些查询,然后再从另一个DB做另一个查询。我该怎么做?我只是
mysql_pconnect("host:3306", "user", "password") or die(mysql_error());
mysql_select_db("Test") or die(mysql_error());
//do some query
mysql_pconnect("host2:3306", "user", "password") or die(mysql_error());
mysql_select_db("Test") or die(mysql_error());
//do another query
你是怎么做到的?几个问题。注意我使用了pconnect,这会影响在同一页面上调用它两次吗?另外,在调用第二个之前,我是否必须关闭第一个连接?
答案 0 :(得分:4)
您需要将数据库连接链接存储在单独的变量中。例如
$connection_1 = mysql_connect("host:3306", "user", "password") or die(mysql_error());
mysql_select_db("Test", $connection_1) or die(mysql_error());
$connection_2 = mysql_pconnect("host2:3306", "user", "password") or die(mysql_error());
mysql_select_db("Test", $connection_2) or die(mysql_error());
mysql_query("your query", $connection_1); // run query for first connection
mysql_query("your query", $connection_2); // run query for second connection
答案 1 :(得分:0)
您需要存储从mysql_connect返回的资源,并在执行mysql_select_db时使用它。
$res1 = mysql_pconnect(...);
mysql_select_db("Test", $res1);
$res2 = mysql_pconnect(...);
mysql_select_db("Test", $res2);
然后在查询相应的数据库时使用$ res1或$ res2。
mysql_query("select * from test_table", $res1);
mysql_query("select * from test_table", $res2);
答案 2 :(得分:0)
你是怎么做到的?
这将使您的脚本与不同的主机保持两个打开的连接,直到它结束。
您可以再次致电mysql_pconnect
重新使用其中任何一种连接。
注意我使用了
pconnect
,这会影响在同一页面上调用它两次吗?
来自docs:
该函数首先尝试使用相同的主机,用户名和密码找到已经打开的(持久)链接
由于您的主机不同,因此会有两种不同的连接
另外,在调用第二个连接之前,是否必须关闭第一个连接?
您无法明确关闭使用mysql_pconnect
打开的连接。
答案 3 :(得分:0)
你做了RTM,对,因为你没有使用$link_identifier
?
http://us.php.net/mysql_select_db:
bool mysql_select_db ( string $database_name [, resource $link_identifier ] )
设置服务器上与指定链接标识符关联的当前活动数据库。每次对mysql_query()的后续调用都将在活动数据库上进行。
参数
database_name
要选择的数据库的名称。
link_identifier
MySQL连接。如果未指定链接标识符,则假定mysql_connect()打开的最后一个链接。如果没有找到这样的链接,它将尝试创建一个,就好像没有参数调用mysql_connect()一样。如果未找到或建立连接,则会生成E_WARNING级别错误。
无论何时使用pconnect,您都要共享连接(不仅在页面内,而且可能与其他页面共享) - 在这种情况下,请不要这样做。您需要隔离链接,因此需要隔离的事务。您应该考虑使用mysql_connect
,并明确使用new_link
参数。最后,明确使用$link_identifier
,以便明确您要连接的内容。