1

我无法理解这个错误,有人可以向我解释一下吗?

PHP 致命错误:在第 27 行的 /user/dal.php 中的非对象上调用成员函数 fetchColumn()

我试图通过使用正则表达式对最后一个查询执行新SELECT COUNT(*)查询来获取最后一个查询的计数。问题是$stmt->fetchColumn()导致致命错误,然后我得到Error 500.

function dbRowsCount($sql) {
    global $db;
    $regex = '/^SELECT\s+(?:ALL\s+|DISTINCT\s+)?(?:.*?)\s+FROM\s+(.*)$/i';
    if (preg_match($regex, $sql, $output) > 0) {
        $stmt = $db->query("SELECT COUNT(*) FROM {$output[1]}", PDO::FETCH_NUM);
        return $stmt->fetchColumn();
    }

    return false;
}

我究竟做错了什么?

4

2 回答 2

3

您应该检查您的调用是否$db->query返回一个有效的 PDO 对象。像这样的东西:

$stmt = $db->query(...);
if (! $stmt) {
    print_r($db->errorInfo());
}
于 2012-04-27T16:37:41.600 回答
1

大概

  $db->query("SELECT COUNT(*) FROM {$output[1]}", PDO::FETCH_NUM);

失败,所以 $stmt 的值为 false 并且你不能调用它 fetchColumn(); 我认为sql查询有问题

http://www.php.net/manual/en/pdo.query.php

于 2012-04-27T16:40:22.327 回答