Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 调用未定义的方法PDO::fetch()_Php_Mysql - Fatal编程技术网

Php 调用未定义的方法PDO::fetch()

Php 调用未定义的方法PDO::fetch(),php,mysql,Php,Mysql,我知道关于这个标题还有一些其他的问题,但它们似乎是针对具体情况的,或者我只是无法理解,但我在这段代码中遇到了错误,我不知道为什么 $db = new PDO($dsn, $username, $password); $query = "Select * FROM book INNER JOIN course ON book.course = course.courseID ORDER BY courseTitle"; //query result $bo

我知道关于这个标题还有一些其他的问题,但它们似乎是针对具体情况的,或者我只是无法理解,但我在这段代码中遇到了错误,我不知道为什么

$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
教程的示例,得到了相同类型的错误。在使用与查询结果集相关的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);

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

fetch
$sth
上,而不是在
$db
上。我更改为$sth,现在我得到“对非对象调用成员函数fetch()”错误,然后
query
返回
false
,因为您的查询不正确。使用
var\u dump($db->errorInfo())
找出问题所在。如果我的查询不正确,我将处理语法。谢谢。嗯,
$db
也是一个PDO对象,您可以在其上使用“PDO函数”…嘿,贝斯特,谢谢您的响应,我做了您提供的更改,现在我得到了这个错误。”对非对象调用成员函数fetch()“book不是成员对象吗?”@deceze-啊,我知道,我解释得相当糟糕。也许现在更清楚了?@john-我猜你以前从未在正在开发的计算机上使用过PDO?PDO激活了吗?用phpinfo()检查它。@bestprogrammerintheworld:如果PDO未激活,它将在
新PDO(…)
上崩溃。我打赌查询本身有语法错误。