【发布时间】:2013-06-27 16:59:25
【问题描述】:
我尝试通过 PHP 和 PDO 查询从 MySQL 数据库中获取类似的内容:
return array(
"Jungle Book" => new Book("Jungle Book", "R. Kipling", "A classic book."),
"Moonwalker" => new Book("Moonwalker", "J. Walker", ""),
"PHP for Dummies" => new Book("PHP for Dummies", "Some Smart Guy", "")
);
数据库的每一行都应该存储在一个对象中。 谁能帮我解决这个问题?
我试过了:
return array(
foreach ($dbh->query("SELECT * FROM books") as $row) {
$row['name'] => new Book($row['name'], $row['author'], $row['description']);
}
)
...但是数组中不允许使用 foreach...
背景:出于学习目的,我正在关注本教程:http://php-html.net/tutorials/model-view-controller-in-php/,我现在正在尝试用与真实数据库一起使用的代码替换静态书籍列表。
【问题讨论】:
-
您需要
$dbh->query("SELECT * FROM books")->fetchAll(PDO::FETCH_ASSOC)才能工作。 Foreach 适用于数组。你想要 foreach 一个对象(PDOStatement)。 -
@NB,您不应该将 fetchAll() 链接到 query() 之外,因为 query() 不能保证返回 PDOStatement 对象。出错时返回
false。 -
@BillKarwin - 这个人正在学习过程中,抛出我们现在这样的术语暂时没有帮助。我知道如何使用手册,如果我听起来很粗鲁,我很抱歉,但我个人知道。