背景
在处理 Feeddemon 的两个 SQLite 数据库(tags.fdb 和 feeds.fdb)时,我创建了这个有效的原始查询语句(使用 Firefox 的便捷插件 SQLite Manager 进行测试):
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
按标签名称排序的查询结果:
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');
那么我该如何弥补差距并使用一个查询来针对两个数据库?或者我可以直接在PDO中使用SQLite的
ATTACH database AS alias
功能吗?如果可以,怎么做呢?但这可能被认为是不好的实践,对吧?因为PDO旨在与数据库无关。我认为这位用户最终也在寻找同样的东西,但从未真正得到工作代码示例的要点:如何在同一foreach循环中连接两个PDO对象?注意:回答时请考虑到我是一个前端/图形人员,只是大约两个月前开始学习PHP/PDO/SQLite。这个问题可能超出了我的经验水平。我很惊讶自己成功地使原始查询工作。但我正在学习...
Could not find driver ... PDO->__construct('sqlite:...
。 - ashleedawg