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 関数を使用する場合は、$db の代わりに $sth を使用する必要があります。

$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 に答える