Фатальная ошибка PHP с PDOStatement fetchColumn()
Я не могу понять эту ошибку, может кто-нибудь объяснить мне?
Неустранимая ошибка PHP: вызов функции-члена fetchColumn() для необъекта в /user/dal.php в строке 27
Я пытаюсь получить счетчик последнего запроса, используя регулярное выражение для выполнения нового 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 ответа
Решение
Вы должны проверить, что ваш звонок $db->query
возвращает действительный объект PDO. Что-то вроде этого:
$stmt = $db->query(...);
if (! $stmt) {
print_r($db->errorInfo());
}
Наверное
$db->query("SELECT COUNT(*) FROM {$output[1]}", PDO::FETCH_NUM);
терпит неудачу, поэтому $stmt принимает значение false, и вы не можете вызвать его fetchColumn(); Я думаю, что-то не так с запросом SQL