语境
使用 Feeddemon 的两个 SQLite 数据库tags.fdb和feeds.fdb,我创建了这个有效的原始查询(使用 Firefox 的便捷插件 SQLite 管理器进行了测试):
SELECT tbl_tags.tag_name, feeds.tbl_posts.link
FROM tbl_tags
INNER JOIN feeds.tbl_posts
ON tbl_tags.fd_postid=feeds.tbl_posts.fd_postid
ORDER BY tbl_tags.tag_name
它主要查询 Feeddemon 的tags.fdb和附加的feeds.fdb数据库文件(使用 SQLite 的功能ATTACH feeds.fdb AS feeds
)。它列出了所有带标签的帖子及其标签名称和超链接。可以看到,数据库内容是通过 fd_postid 关联的。
可视化发生情况的示例:
tags.fdb的 tbl_tags 表内容:
fd_postid tag_name
1 rainbow
2 orange
5 green
feeds.fdb的 tbl_posts 表内容:
fd_postid link
1 google.com
2 stackoverflow.com
3 microsoft.com
4 slashdot.org
5 techcrunch.com
查询结果,按 tag_name 排序:
green techcrunch.com
orange stackoverflow.com
rainbow google.com
问题
如何使用 PHP 中的 PDO 实现这个单一的内部连接查询以覆盖多个相关数据库?
在 PDO 中连接到两个数据库也会创建两个对象:
$db1 = new PDO('sqlite:tags.fdb');
$db2 = new PDO('sqlite:feeds.fdb');
但是如果我想查询,我必须指定一个对象:
$result = $db1->query('SELECT * FROM sometable');
那么,如何缩小差距并使用一个查询来定位两个数据库呢?
或者我可以ATTACH database AS alias
直接在 PDO 中使用 SQLite 的功能吗?如果是这样,怎么做?但这可能会被认为是不好的做法,对吧?由于 PDO 旨在成为非特定数据库。
我认为这个用户最终也在寻找同样的东西,但从未真正达到工作代码示例的目的:
如何在同一个 foreach 循环中加入两个 PDO 对象?
注意:在回答时请考虑我是一个前端/图形专家,大约两个月前才开始学习 PHP/PDO/SQLite。这个问题可能超出了我的经验水平。我很惊讶我设法让原始查询正常工作。但我在学习...