dongzhuang6247 2019-08-16 19:20
浏览 196
已采纳

PHP致命错误:未捕获错误:调用布尔值[duplicate]上的成员函数setFetchMode()

This question already has an answer here:

I understand that this error occurs when you try to call a method on something that is not an object. In this case, the variable that should hold an object is actually a boolean.

I just don't know how to fix it.

If you look at MySQL::query(), the function returns either false (on error) or an object of the type mysql_result. A bad SQL query will make the query fail and the function to return false.

Because the error occurs when I try to call setFetchMode, it probably means my PDO query failed, but I honestly have no idea.

<?php

$host = 'localhost';
$dbname = 'DBNAME';
$username = 'USERNAME';
$password = 'PASSWORD';

try {

   $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);

   $sql = 'SELECT id, topic, category, type, doi, author, year
   FROM literature
   ORDER BY id';

   $q = $pdo->query($sql);

   $q->setFetchMode(PDO::FETCH_ASSOC);

} catch (PDOException $e) {

   die("Could not connect to the database $dbname :" . $e->getMessage());

}

?>

It returns the error: "PHP Fatal error: Uncaught Error: Call to a member function setFetchMode() on boolean in /root/somewhere/somefile/anotherfile/FILENAME.php:12" because $q is false. I just don't know how to have it return the object.

The weird part is that it works perfectly fine on my stand-alone server.

</div>
  • 写回答

2条回答 默认 最新

  • duanban4769 2019-08-16 19:59
    关注

    if your $q is false its mean you have error in sql query or a connection, you can use this connection to see more info about your error:

    $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
    

    then it will throw exception before you try to access (bool)->{someMethod}

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵