PDOStatement fetchColumn()的PHP致命错误

时间:2012-04-27 16:35:40

标签: php pdo rowcount pdostatement

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

  

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;
}

我做错了什么?

2 个答案:

答案 0 :(得分:3)

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

$stmt = $db->query(...);
if (! $stmt) {
    print_r($db->errorInfo());
}

答案 1 :(得分:1)

可能

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

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

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