1个PHP文件可以连接到2个数据库吗?

时间:2012-07-09 18:52:09

标签: php mysql

我正在尝试连接到第一个数据库以提取一些信息,然后使用该信息更新第二个数据库中的表。

但是,如果我不关闭连接,则第二个查询总是尝试从第一个数据库中提取。如果我关闭连接,那么它会给我一个套接字错误。

我正在使用Drupal(所以我的第一个数据库是Drupal数据库)。我希望从其中一个表中获取一个值,并在3个不同的PHP页面中的一个加载时将其放入我的成员信息数据库中。

这可能吗?

2 个答案:

答案 0 :(得分:6)

是的,您可以创建多个连接。您需要将mysql_query中的链接指定为第二个参数。

示例:

$link1 = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link1) {
    die('Not connected : ' . mysql_error());
}

// second foo1
$db_selected_1 = mysql_select_db('foo1', $link1);
if (!$db_selected_1) {
    die ('Can\'t use foo : ' . mysql_error());
}

$link2 = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link2) {
    die('Not connected : ' . mysql_error());
}

// select foo2
$db_selected_2 = mysql_select_db('foo2', $link2);
if (!$db_selected_2) {
    die ('Can\'t use foo : ' . mysql_error());
}

// query on first db
mysql_query('SELECT * FROM 1 WHERE 1', $link1);

// query on second db
mysql_query('SELECT * FROM 1 WHERE 1', $link2);

如果两个数据库在同一台服务器上有相同的crendetials,你可以这样做:

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
    die('Not connected : ' . mysql_error());
}

// select foo1
$db_selected = mysql_select_db('foo1', $link);

// query on first db
mysql_query('SELECT * FROM 1 WHERE 1', $link);

// select foo2
$db_selected = mysql_select_db('foo2', $link);

// query on second db
mysql_query('SELECT * FROM 1 WHERE 1', $link);

但我建议您使用mysqli_甚至PDO

答案 1 :(得分:1)

您可以同时存储多个连接。

PHP没有任何限制可以阻止你这样做。

如果您遇到特定代码问题,请更新问题。