是否可以连接到多个数据库?例如。 “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);
谢谢。
答案 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
为了保存到两个不同的数据库,我会考虑您的数据模型是否正确。应该在同一事务中的两个表应该位于同一个数据库中。如果那是不可能的,我宁愿一次保存到一个临时表而不是两个临时表。然后,基于计时器的任务可以出现并移动数据。