【发布时间】:2011-06-28 15:00:05
【问题描述】:
我一直在尝试创建一个列出基于一系列大师的详细信息的结果页面。
这是一个示例问题...
如下图所示的三个表:
Book (id, title)
Author (id, name)
BookAuthors (bookID, authorID)
我希望生成一个类似这样的列表:
Book Title 1
Author 1
Author 2
Book Title 2
Author 3
Book Title 3
Author 1
Author 4
等等。
我希望使用 PHP PDO 来实现。
[更新更详细]
我遇到的问题更多是关于如何在无法嵌套准备好的语句时从 PDO 遍历结果...
我希望在查询中嵌套查询并使用第一个查询的结果 [我已扩展查询以包括对书名的过滤器,但这可能是空白的,因此返回整个集合]:
select id as idBook,title from book where title like %:title%
然后为每本书创建作者列表
select name from author, bookauthors
where bookauthor.authorid = author.id
AND bookauthor.bookid = :idBook:
其中 :idBook: 是第一次查询结果集中的下一本书 ID。
由于第一次查询中检索到的书籍数量可能很大,我希望尽可能不要使用 fetchall...
任何人对此有指针/示例解决方案代码?
非常感谢!
【问题讨论】:
-
我没有示例代码,但我把爱和幸福送给你 Ady!您正在寻找
join。 -
@hakre 我知道我将使用 Joins,我遇到的问题是遍历结果。我希望在查询中嵌套一个查询并使用第一个查询的结果(选择 id 作为 idBook,书名)然后为每本书创建作者列表(从作者中选择姓名,bookauthors where bookauthor.authorid = author.id AND bookauthor.bookid = :idBook:)。
-
阅读 lastInsertId() php.net/manual/en/pdo.lastinsertid.php
-
Mike S - 我不需要 lastinsertid 来解决这个问题。我不是在添加新记录,而是在做主-细节-子细节显示。
标签: php mysql pdo master-detail