如何连接来自不同数据库的两个表。一个数据库是localhost,另一个是在线。
$connectA = mysql_connect('localhost','root','','abc');
$connectB = mysql_connect('xxx','yyy','zzz','xyz');
我想加入表部门中的 department_name ,该数据库 abc 和 xyz 。
答案 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
加入它们。
答案 3 :(得分:0)
用户可以使用诸如Teiid http://teiid.io之类的数据库联合(数据虚拟化)技术,并跨数据库甚至是来自文件和Web服务的数据联接表。