Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.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 致命错误:对{path}中的布尔值调用成员函数fetch()_Php_Mysql_Sql_Pdo - Fatal编程技术网

Php 致命错误:对{path}中的布尔值调用成员函数fetch()

Php 致命错误:对{path}中的布尔值调用成员函数fetch(),php,mysql,sql,pdo,Php,Mysql,Sql,Pdo,这是我的密码: $money = $db_con ->prepare(" SELECT SUM(asker_amount) asker, SUM(responder_amount) responder FROM money WHERE post_id = ? AND author_id = ? AND paid IS NULL") ->execute(array($ques_id, $author_ques_id)) ->fetch(PDO::FETCH

这是我的密码:

$money = $db_con
->prepare(" SELECT SUM(asker_amount) asker, SUM(responder_amount) responder
            FROM money WHERE post_id = ? AND author_id = ? AND paid IS NULL")
->execute(array($ques_id, $author_ques_id))
->fetch(PDO::FETCH_ASSOC);
$asker_amount = $money['asker'];
$responder_amount = $money['responder'];
它不执行并抛出以下错误:

致命错误:调用第5行->fetch上{file path}中布尔值上的成员函数fetch

好吧,怎么了?我怎样才能修好它

注意:该查询也可以运行,我已经在phpmyadmin中对其进行了测试。

试试这个

$query = $db_con->prepare(" SELECT SUM(asker_amount) asker, SUM(responder_amount) responder
        FROM money WHERE post_id = ? AND author_id = ? AND paid IS NULL");
$query->execute(array($ques_id, $author_ques_id));
$money = $query->fetch(PDO::FETCH_ASSOC);
$asker_amount = $money['asker'];
$responder_amount = $money['responder'];

您应该只为$money分配最终获取的结果。

execute函数返回一个布尔值:@pgmann您的意思是我必须获取$money,而不是将其链接到execute?显然它在这里不起作用,因为该过程的某个阶段失败并返回布尔值false。一般来说,永远不要像那样链接DB调用。它假设什么都不会失败,这正是错误的态度。即使sql语法100%完美,查询也可能失败。始终假设失败,检查每个阶段的失败,并将成功视为惊喜。fetch的可能重复是一种PDO语句的方法,而不是PDO@vp_arth对不起,修好了!仍然不检查错误。如果prepare失败并返回boolean false,那么over后续语句无论如何都是无用的。@MarcB您可以为我的问题写一个答案吗?如果您只需要报告它,就不需要了。因为PDO可以自己报告错误。只有在考虑到特定的处理场景时,才能编写处理代码。否则,就让PHP以通常的方式报告它。