Php 是否可以连接到多个数据库,例如:。数据库1,数据库2

Php 是否可以连接到多个数据库,例如:。数据库1,数据库2,php,mysql,database,Php,Mysql,Database,是否可以连接到多个数据库?E、 g。“数据库1,数据库2” 如果不可能,任何人都可以告诉我如何连接多个数据库 $db_host = 'localhost'; $db_user = 'username'; $db_pass = 'password'; $db_database = 'username_database1, username_database2'; /* End config */ $link = @mysql_conn

是否可以连接到多个数据库?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);
$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

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

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

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

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

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

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

PHPmysql扩展正式启动

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

$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);
$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('');
$db1=@mysqli_connect('hostname','username','password','db1');
$db2=@mysqli_connect('hostname','username','password','db2');
$obj1=数组();
$obj2=array();
if($res=mysqli_查询($db1,'SHOW TABLES')){
而($obj=mysqli_fetch_object($res))$obj1[]=$obj;
mysqli_免费_结果($res);
}
if($res=mysqli_query($db2,'showtables')){
而($obj=mysqli_fetch_object($res))$obj2[]=$obj;
mysqli_免费_结果($res);
}
变量转储($obj1);
回声“
”; var_转储(obj2美元); 回声“
”; @mysqli_close($db1); @mysqli_close($db2); 死亡(“”);
是的,这个问题以前已经回答过,但是您应该尝试使用mysqli

PHPmysql扩展正式启动

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

$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);
$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('');
$db1=@mysqli_connect('hostname','username','password','db1');
$db2=@mysqli_connect('hostname','username','password','db2');
$obj1=数组();
$obj2=array();
if($res=mysqli_查询($db1,'SHOW TABLES')){
而($obj=mysqli_fetch_object($res))$obj1[]=$obj;
mysqli_免费_结果($res);
}
if($res=mysqli_query($db2,'showtables')){
而($obj=mysqli_fetch_object($res))$obj2[]=$obj;
mysqli_免费_结果($res);
}
变量转储($obj1);
回声“
”; var_转储(obj2美元); 回声“
”; @mysqli_close($db1); @mysqli_close($db2); 死亡(“”);
是,这是可能的。选项1用户可以访问所有数据库,选项2尽可能为每个数据库创建连接资源。选项1用户可以访问所有数据库,选项2创建一个到eachlol的连接资源,这是关于评论和回答之间区别的规则吗?对不起。我没有足够的声誉来发表评论。我一到那里肯定会用的!哈哈,这就是评论和回答之间区别的规则吗?对不起。我没有足够的声誉来发表评论。我一到那里肯定会用的!