PDO: Призвать к выборке функции членства () на необъекте? [дубликат]

9
задан Carlos 28 July 2010 в 03:06
поделиться

2 ответа

Внимательно посмотрите документацию для PDO :: query , особенно раздел «Возвращаемые значения»:

PDO :: query () возвращает PDOStatement объект или FALSE в случае ошибки.

Важным битом является «ЛОЖЬ при ошибке». FALSE не является объектом, поэтому вызов -> fetch () - плохая новость.

Вероятно, ошибка связана с использованием оператора сравнения "==". В SQL это просто «=».

Вы должны проверить, что $ sql_shouts не является ложным, а затем сделать что-нибудь умное с ошибкой, если она была:

<?PHP
$sql_shouts = $this->db->query('...');
if ($sql_shouts === false){
    $errorInfo = $this->db->errorInfo();
    //log the error or take some other smart action
}
return $sql_shouts->fetch(PDO::FETCH_OBJ);
17
ответ дан 4 December 2019 в 12:59
поделиться

Я бы сказал, что ваш запрос не выполняется из-за неправильного синтаксиса. Вам действительно следует проверить статическую функцию PDO errorinfo, чтобы узнать, ошиблись ли запросы или нет.

Вот потенциально правильный оператор SQL:

$sql_shouts = $this->db->query('SELECT shoutid, message, pmuserid, ipadress, `time` FROM shouts WHERE pmuserid = 0');

Я считаю, что время - это зарезервированное слово в MySQL. Я бы рекомендовал использовать другое имя, но заключая его в обратные кавычки, можно решить эту проблему. Для mysql используется 1 знак равенства, а не два. Но да, посмотрите на функцию errorinfo, чтобы определить, не удалось ли выполнить ваш запрос из-за синтаксической ошибки, и аккуратно обработать ее.

1
ответ дан 4 December 2019 в 12:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: