如何使用 PDO 跨两个数据库运行连接查询
Posted
技术标签:
【中文标题】如何使用 PDO 跨两个数据库运行连接查询【英文标题】:How to run a query with a join accross two databases with PDO 【发布时间】:2015-03-14 20:09:05 【问题描述】:我有两个 PDO 对象代表两个数据库,pdo1 和 pdo2,声明如下:
try
$pdo1 = new PDO('mysql:host=localhost;dbname=database1', 'user', 'password');
$pdo1->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo1->exec('SET NAMES "utf8"');
^ 我对用于第二个数据库的 $pdo2 做了同样的事情。
到目前为止,我访问数据库的方式如下:
try
$sql = 'SELECT * from table1';
$result = $pdo1->query($sql);
现在我想运行一个查询,其中两个表跨两个数据库连接。如何使用两个 pdo 对象执行此操作?这就是我所拥有的,但我被困在如何做 $result 部分,我放了 asterixis:
try
$sql = 'SELECT database1.table1.name FROM database1.table1 LEFT JOIN database2.table2
ON database1.table1.userid = database2.table2.userid';
$result = $pdo***->query($sql);
以前,它会引用 $pdo1 或 $pdo2,但是如何组合该部分以从组合的 pdo 对象中提取结果?
【问题讨论】:
您必须能够使用 pdo 以某种方式跨两个数据库连接两个表,不是吗? 可以,但您必须使用单个 PDO 对象来访问两个数据库的用户。 php sql join together multiple tables from different databases 的可能重复项 用户可以访问这两个数据库。但是在这种情况下,如何声明 PDO 对象来表示两个数据库? 你没有。只需在连接字符串中声明一个,并像在示例中那样使用 db 前缀。 【参考方案1】:使用一个连接,然后进行类似的查询
SELECT ... FROM db1.tbl1 JOIN db2.tbl2 ...
(您需要访问这两个数据库的权限。)
【讨论】:
以上是关于如何使用 PDO 跨两个数据库运行连接查询的主要内容,如果未能解决你的问题,请参考以下文章