是否可以连接到多个数据库E,g。 database1,database2

时间:2013-08-23 01:15:09

标签: php mysql database

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

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

$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);
谢谢。

3 个答案:

答案 0 :(得分:2)

是的,此问题之前已经得到解答,但您应该尝试使用 mysqli

PHP mysql 扩展名正式为deprecated in 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('');

答案 1 :(得分:1)

是的,有可能。但是,这个问题已被不止一次提出过。请遵守规则!这是之前的link

答案 2 :(得分:1)

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

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

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

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