【问题标题】:Why does this query script return a fatal error?为什么这个查询脚本返回一个致命错误?
【发布时间】:2012-11-21 20:15:32
【问题描述】:

执行以下查询时出现致命错误:

$stmt = $db->query('SELECT * FROM comments LIMIT 50');
    while ($result = $stmt->fetch(PDO::FETCH_ASSOC)) {
        echo $result['name'] . ':' . strip_tags($result['message']);
    }

返回:

  Fatal error: Call to a member function query() on a non-object

我这样设置我的 $db:

try {$db = new PDO('mysql:host=localhost;dbname=database', 'username', 'password');}
catch(PDOException $e) {echo $e->getMessage();}

有谁知道是什么导致了这个错误?

【问题讨论】:

  • 你忘记初始化$db了吗?
  • 你是如何设置 $db 的?

标签: php pdo fatal-error


【解决方案1】:

由于执行查询,您没有收到错误。查询实际上永远不会尝试执行

这个错误 -

Fatal error: Call to a member function query() on a non-object

告诉你$db 不是一个对象。

要么从未实例化,要么在不同的范围内实例化。

【讨论】:

  • 确实,我不小心将 $db 放在了一个 if 语句中,该语句只能在 post 请求中执行。已修复,谢谢!
【解决方案2】:

$db 在你使用的范围内没有被正确初始化。

您可能想尝试在它们前面加上global $db;,看看是否是范围问题。

global $db;
try {$db = new PDO('mysql:host=localhost;dbname=database', 'username', 'password');}
catch(PDOException $e) {echo $e->getMessage();}

global $db;
$stmt = $db->query('SELECT * FROM comments LIMIT 50');
    while ($result = $stmt->fetch(PDO::FETCH_ASSOC)) {
        echo $result['name'] . ':' . strip_tags($result['message']);
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-09
    • 2016-02-27
    相关资源
    最近更新 更多