我无法理解这个错误,有人可以向我解释一下吗?
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;
}
我做错了什么?
答案 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查询有问题