1

可能重复:
如何在单个网页上连接到多个 MySQL 数据库?

如果我想连接到一个数据库做一些查询,然后再从另一个数据库做另一个查询。我该怎么做?我只是

 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,这会影响在同一页面上调用它两次吗?另外,在调用第二个之前,我是否必须关闭第一个的连接?

4

4 回答 4

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
于 2009-10-09T15:40:15.943 回答
1

您需要存储从 mysql_connect 返回的资源,并在执行 mysql_select_db 时使用它。

$res1 = mysql_pconnect(...);
mysql_select_db("Test", $res1);

$res2 = mysql_pconnect(...);
mysql_select_db("Test", $res2);

然后在查询对应的db时使用$res1或$res2。

mysql_query("select * from test_table", $res1);

mysql_query("select * from test_table", $res2);
于 2009-10-09T15:41:12.007 回答
0

你是这样做的吗?

这将使您的脚本与不同的主机有两个打开的连接,直到它结束。

您可以通过再次调用来重用这些连接中的任何一个mysql_pconnect

请注意,我使用pconnect了 ,这会影响在同一页面上调用它两次吗?

文档

该函数将首先尝试查找已使用相同主机、用户名和密码打开的(永久)链接

由于您的主机不同,因此将有两个不同的连接

另外,在调用第二个之前,我是否必须关闭第一个的连接?

您不能显式关闭使用mysql_pconnect.

于 2009-10-09T15:44:25.477 回答
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_identifierMySQL 连接。

如果未指定链接标识符,则假定由 mysql_connect() 打开的最后一个链接。如果没有找到这样的链接,它将尝试创建一个,就好像 mysql_connect() 没有参数被调用一样。如果未找到或建立连接,则会生成 E_WARNING 级别错误。

每当您使用 pconnect 时,您都在共享连接(不仅在页面内,而且可能与其他页面) - 在您的情况下,不要这样做。您需要隔离的链接,因此需要隔离的事务。您可能应该考虑mysql_connect并明确使用该new_link参数。最后,$link_identifier显式使用,这样您就清楚要连接到什么。

于 2009-10-09T16:02:21.463 回答