所以这是我的查询,它从2个不同数据库的3个表中选择数据:
SELECT r.id AS id, r.idAccount AS idAccount, r.name AS name, r.surname AS surname, r.company AS company, r.`date` AS date, r.callback_date AS callback_date, u.user_owner_id, c.name
FROM D045618D.`requests_free_demos` AS r
LEFT JOIN D045617D.`user_accounts` AS u ON r.`idAccount` = u.user_id
LEFT JOIN D045618D.`cmsUsers` AS c ON u.`user_owner_id` = c.`id`
WHERE c.`id` = " . $GLOBALS['cmsUser']->id
现在我需要用PHP执行该查询。问题是我必须同时打开2个数据库,有人知道怎么做吗?
是否可能,或者有更好的方法来解决这个问题?
由于
答案 0 :(得分:4)
不,您不需要打开两个数据库。只需执行mysql_connect
并按mysql_query
运行查询即可。它会正常工作。
只要(1)所有表名都完全引用数据库名称,(2)两个数据库都在同一台服务器上,(3)用户可以访问这两个数据库,不需要对其进行mysql_select_db
。所有这些查询都可以正常工作。
答案 1 :(得分:1)
两个数据库是否在同一台服务器上? 正如其他人已经说过你不应该有任何问题。 如果两个数据库位于两个不同的服务器上,我能想到的唯一解决方案是创建一个服务器联合表来访问另一个服务器。
http://dev.mysql.com/doc/refman/5.1/en/federated-storage-engine.html
简单来说: 联合表允许您将远程表线程化为本地表。
答案 2 :(得分:0)
没问题,如果它们在同一台服务器上,并且您具有适当的权限,并且您为每个表名称添加了正确的数据库名称(您正在执行的操作),则可以将其提供给一个mysql连接。无需打开2个数据库;您只能打开与服务器的连接。