如何从不同的数据库连接两个表

时间:2015-02-24 11:19:33

标签: php mysql

如何连接来自不同数据库的两个表。一个数据库是localhost,另一个是在线。

$connectA = mysql_connect('localhost','root','','abc');
$connectB = mysql_connect('xxx','yyy','zzz','xyz');

我想加入表部门中的 department_name ,该数据库 abc xyz

4 个答案:

答案 0 :(得分:2)

您只能join表示使用SQL JOINS。它是,因为SQL查询总是发送到特定的数据库或服务器。

您需要发送两个独立的查询,每个数据库一个,然后在PHP中提供一些逻辑,以通过array_merge(完全加入)或更高级的脚本加入它们。

如果没有看到自己的代码,就无法提供更多帮助。

答案 1 :(得分:0)

如果MySQL用户可以访问两个数据库并且它们位于同一主机上(即两个数据库都可以从同一个连接访问),您可以:

  • 保持一个连接打开,并根据需要调用mysql_select_db()进行交换。我不确定这是一个干净的解决方案,你最终可能会查询错误的数据库。

  • 在查询中引用表格时指定数据库名称(例如SELECT * FROM database2.tablename)。这可能是一个很难实现的。

另请阅读troelskn的答案,因为如果您能够使用PDO而不是旧的扩展程序,那么这是一种更好的方法。

答案 2 :(得分:0)

正如已经说过的那样,这是不可能的。 我会保存数据库连接并在数据库之间切换。

只是一个简单的例子(和mysqli)

$db1 = mysqli_connect("localhost", "my_user", "my_password", "world");
$db2 = mysqli_connect("localhost2", "my_user2", "my_password2", "world2");

然后当你想要执行查询时

mysqli_query($db1, "SELECT * ...");

或其他数据库

mysqli_query($db2, "SELECT * ...");

将查询结果保存在数组中,然后使用例如array_merge加入它们。

http://php.net/manual/en/function.array-merge.php

答案 3 :(得分:0)

用户可以使用诸如Teiid http://teiid.io之类的数据库联合(数据虚拟化)技术,并跨数据库甚至是来自文件和Web服务的数据联接表。