通过单一连接从两个不同的数据库获取数据,这是一种有效的方法

时间:2014-05-19 20:24:04

标签: php mysql

当我第一次阅读mysqli_connect()时,我认为我们只能对作为mysqli_connect()的参数传递的数据库执行sql操作,但今天我只是尝试一下,是吗?可以在我的本地服务器上对两个不同数据库的表执行连接操作。所以我创建了另一个数据库(db_2)。令人惊讶的是它有效。

我尝试使用Google搜索此主题,但我找到了与mysql_connect()mysql_select_db()相关的旧答案。只需看看我的代码

$host="localhost";
$username="root";
$password="";
$db_name="db_1";  

$con = mysqli_connect($host,$username,$password,$db_name); 

$sql_query = "SELECT name FROM db_1.user as u inner join
                       db_2.user as us ON us.id = u.id
                       WHERE u.id = 102 LIMIT 1";

$result = mysqli_query($con,$sql_query);

$row = mysqli_fetch_array($result, MYSQL_ASSOC);

echo $row['name'];

最初我认为我们应该与两个数据库建立两个连接,这样就可以使用两个数据库

 $con1 = mysqli_connect($host,$username,$password,"db_1"); 
 $con2 = mysqli_connect($host,$username,$password,"db_2"); 

但只使用单一连接很容易在两个数据库之间获取数据。

我的问题是加入两个数据库的正确方法吗?我知道PDO是更好的方式,但出于好奇只是想知道。

还有任何限制吗?当我拥有庞大的数据时,这是首选方式。

当您在两个数据库之间获取数据时,它是否真的会降低性能,或者它很少。任何帮助是极大的赞赏。感谢

1 个答案:

答案 0 :(得分:0)

如果两个数据库都在同一台服务器上,并且您正在使用的用户可以访问这些数据库。您应该可以将这样的查询放在一起......

SELECT db1.table1.column1, db2.table2.column2 FROM db1.table1 JOIN db2.table2 ON db1.table1.column1 = db2.table2.column2;