php - PHP 致命错误:未捕获的错误:在布尔值上调用成员函数 setFetchMode()
问题描述
我了解当您尝试对非对象调用方法时会发生此错误。在这种情况下,应该保存对象的变量实际上是一个布尔值。
我只是不知道如何解决它。
如果您查看 MySQL::query(),该函数返回 false(错误时)或 mysql_result 类型的对象。一个错误的 SQL 查询将使查询失败并且函数返回 false。
因为当我尝试调用 setFetchMode 时出现错误,这可能意味着我的 PDO 查询失败,但老实说我不知道。
<?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());
}
?>
它返回错误:“PHP 致命错误:未捕获的错误:调用 /root/somewhere/somefile/anotherfile/FILENAME.php:12 中布尔值的成员函数 setFetchMode()”,因为 $q 为 false。我只是不知道如何让它返回对象。
奇怪的是,它在我的独立服务器上运行良好。
解决方案
如果您的 $q 为 false,则表示您在 sql 查询或连接中有错误,您可以使用此连接查看有关您的错误的更多信息:
$pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
那么它会在你尝试访问 (bool)->{someMethod} 之前抛出异常
推荐阅读
- python-3.x - 我必须循环一个特定的代码块(Python)
- winforms - 如何阻止 C1.Win.C1FlexGrid 网格在窗口中滚动?
- dynamic - Ember 路由 - 动态段 - 传递模型
- php - 显示我刚刚插入数据库的数据
- c++ - 我对 std::unique (algorithm) C++ 有疑问
- python - 熊猫在不同的列中计算相同的值
- haskell - 案例语句中的 Haskell 函数
- javascript - 如何将 Reactjs API 调用函数保留在独立页面并从组件调用?
- c - C sscanf 无法与 char 指针一起正常工作
- flutter - 颤振构建失败