3

我知道这个标题在这里几乎没有其他问题,但它们似乎是特定于案例的,或者我无法理解它,但我在这段代码中遇到了这个错误,我不知道为什么.

$db = new PDO($dsn, $username, $password);
$query = "Select * FROM book INNER JOIN course
          ON book.course = course.courseID
          ORDER BY courseTitle";

//query result
$books = array();
$sth = $db->query($query);
while( $row = $db->fetch(PDO::FETCH_ASSOC) ) {
    $books[] = $row; // appends each row to the array
}

我想也许我的查询是错误的,所以我尝试了一个PDO教程中的示例,我得到了相同类型的错误。有什么我必须申报的还是我遗漏了什么?

4

1 回答 1

11

当使用与查询结果集相关的 PDO 函数时,您应该使用 $sth 而不是 $db。

$db = new PDO($dsn, $username, $password);
$query = "Select * FROM book INNER JOIN course
ON book.course = course.courseID
ORDER BY courseTitle";

//query result
$books = array();
$sth = $db->query($query);
while( $row = $sth->fetch(PDO::FETCH_ASSOC) ) {
  $books[] = $row; // appends each row to the array
}

调试 PDO 时。在创建 PDO 对象后添加这一行:

$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

然后当查询/查询中有错误时将引发异常。

于 2013-05-01T05:48:46.110 回答