是否可以连接到多个数据库E、g.数据库1、数据库2


is it possible to connect to multiple database E,g. database1, database2

是否可以连接到多个数据库?E、 g。"数据库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);

谢谢。

是的,这个问题以前已经回答过了,但您应该尝试使用mysqli

PHPmysql扩展在5.5 中被正式弃用

下面的代码适用于那些计划使用mysqli(过程形式)连接到多个数据库的人。您可以检查它是否确实可以与多个数据库一起工作。

$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('');

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

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

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

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

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