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(…)
上崩溃。我打赌查询本身有语法错误。