0

是否可以连接到多个数据库?例如。“数据库 1,数据库 2”。

如果不可能,任何人都可以告诉我如何连接多个数据库。

$db_host        = 'localhost';
$db_user        = 'username';
$db_pass        = 'password';
$db_database        = 'username_database1, username_database2'; 

/* End config */


$link = @mysql_connect($db_host,$db_user,$db_pass) or die('Unable to establish a DB connection');

mysql_set_charset('utf8');
mysql_select_db($db_database,$link);

谢谢你。

4

3 回答 3

2

是的,这个问题之前已经回答过了,但是你应该尝试使用mysqli来代替。

PHP mysql扩展在 5.5 中正式弃用

下面的代码是为那些计划使用mysqli (procedural-form) 连接到多个数据库的人准备的。您可以检查它是否确实适用于多个数据库。

$db1 = @mysqli_connect('hostname', 'username', 'password', 'DB1');
$db2 = @mysqli_connect('hostname', 'username', 'password', 'DB2');
$obj1 = array();
$obj2 = array();
if  ($res = mysqli_query($db1, 'SHOW TABLES')) {
    while ($obj = mysqli_fetch_object ( $res )) $obj1[] = $obj;
    mysqli_free_result ( $res );
}
if  ($res = mysqli_query($db2, 'SHOW TABLES')) {
    while ($obj = mysqli_fetch_object ( $res )) $obj2[] = $obj;
    mysqli_free_result ( $res );
}
var_dump($obj1);
echo '<hr/>';
var_dump($obj2);
echo '<hr/>';
@mysqli_close($db1);
@mysqli_close($db2);
die('');
于 2013-08-23T02:34:45.743 回答
1

对的,这是可能的。然而,这个问题已经被问过不止一次了。请遵守规则!这是以前的链接

于 2013-08-23T01:20:31.933 回答
1

这是可行的,但我真的不鼓励您跨两个数据源运行单个事务。这被称为 XA 事务,以我的经验,只会让人头疼。一个数据源超时并导致数据库驱动程序出现问题会出现各种问题。

如果您只想连接并从两个数据源检索数据,只需使用两个连接。或者,如果您使用的是 mysql(并且两者都在与您的示例相同的服务器上),您可以使用不同的数据库前缀并访问不同模式中的表。

select *
from schema1.table1 t1
inner join schema2.table2 t2 on t1.id = t2.id

为了保存到两个不同的数据库,我会考虑您的数据模型是否正确。应该在同一个事务中的两个表可能应该在同一个数据库中。如果这不可能,我更喜欢同时保存到一个临时表而不是两个真实表。然后一个基于计时器的任务可以出现并移动数据。

于 2013-08-23T01:34:23.457 回答