PDO Mysql Синтаксическая ошибка 1064

Я запускаю следующий код:

$conn = new PDO(....); .... pdo attributes ... $limitvalue = 0; $limit = 10; $sql = $conn->prepare("SELECT * FROM table1 LIMIT ?, ?"); $sql->bindParam(1, $limitvalue, PDO::PARAM_INT); $sql->bindParam(2, $limit, PDO::PARAM_INT); $sql->execute(); 

И я получаю:

Исключить исключение «PDOException» с сообщением «SQLSTATE [42000]: Ошибка синтаксиса или нарушение доступа: 1064 У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с 'NULL, 10' в строке 1 '

Это происходит только с этим конкретным запросом. Все остальное в порядке.

Кстати: я знаю, что может показаться глупым, что я подготовил заявления для значений «in-code». Но это всего лишь пример. Фактически значения зависят от номера страницы, но здесь это неважно – этот запрос также дает ту же ошибку.


Если кому-то интересно, версия PHP: 5.3.4RC2 и MySQL: mysqlnd 5.0.7-dev – 091210 – $ Редакция: 304625 $

Solutions Collecting From Web of "PDO Mysql Синтаксическая ошибка 1064"

Кажется, это ошибка php : PDO игнорирует константу PARAM_INT и использует переменные $limit и $limitvalue как строку. Которые цитируются в запросе при привязке.

Попробуйте использовать:

 $sql->bindParam(1, (int)$limitvalue, PDO::PARAM_INT); $sql->bindParam(2, (int)$limit, PDO::PARAM_INT); 

Чтобы заставить тип переменных int.

Я не думаю, что первый параметр предела в sql может быть NULL. Если вам просто нужны первые 10 записей, используйте LIMIT 10.