Фатальная ошибка 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

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

Другие вопросы по тегам