Uncaught PDOException: синтаксическая ошибка SQLSTATE или нарушение прав доступа

я получаю эту ошибку, когда использую select

$listchat = $pdo->prepare("SELECT * FROM listchat WHERE ?, userkey=?, ORDER BY idroom ASC LIMIT ?");

тогда

$num = 10;
$gid = 0;
$listchat->execute([$gid,$userKey,$num]);

Я получаю ошибку в заголовке сообщения, где я не прав?

Неустранимая ошибка: Uncaught PDOException: SQLSTATE[42000]: Синтаксическая ошибка или нарушение доступа: 1064 У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MariaDB, чтобы узнать правильный синтаксис для использования рядом с 'userkey='66756',


person Sias Costantino    schedule 10.02.2021    source источник


Ответы (1)


Вам не хватает столбца для сравнения с $gid. И условия объединяются с помощью AND или OR, а не запятых.

$listchat = $pdo->prepare("
    SELECT * 
    FROM listchat 
    WHERE gid = ? AND userkey=? 
    ORDER BY idroom ASC 
    LIMIT ?");

Вам также нужно использовать bindParam или bindValue для предоставления значения для LIMIT, чтобы вы могли указать, что оно должно рассматриваться как целое число, а не как строка.

$listchat->bindValue(1, $gid);
$listchat->bindValue(2, $userKey);
$listchat->bindValue(3, $num, PDO::PARAM_INT);
$listchat->execute();
person Barmar    schedule 10.02.2021
comment
Я сделал, как вы написали: $listchat = $pdo-›prepare(SELECT * FROM listchat WHERE idroom › ? ABD userkey=? ORDER BY idroom ASC LIMIT ?); но я всегда получаю ошибку - person Sias Costantino; 11.02.2021
comment
Опечатка ABD в реальном коде или ошибка копирования? - person Barmar; 11.02.2021
comment
Не меняйте вопрос, чтобы он соответствовал ответу, как другие читатели узнают, какую проблему я решал? Я отменил ваше редактирование. - person Barmar; 11.02.2021
comment
Вы все еще получаете ту же ошибку или другую ошибку? - person Barmar; 11.02.2021
comment
stackoverflow.com/questions/16868079 / - person Barmar; 11.02.2021