Страницы

Поиск по вопросам

пятница, 11 января 2019 г.

PDO ошибка выборки c LIMIT

Почему выдает ошибку при таком запросе?
$num = 10; $start = 1; $sql = "SELECT * FROM `users_for_events` LIMIT ?, ? "; $data = array($start, $num); $stmt = $this->getCon()->prepare($sql); $stmt->execute($data); $stmt->fetchAll(); var_dump($stmt->fetchAll());
Ошибка вот такого плана:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1327 Undeclared variable: '1'' in


Ответ

В режиме эмуляции все переданные через execute() переменные PDO подставляет в запрос как строки, и в итоге запрос получается
LIMIT '10', '1'
что вызывает ошибку. Самым простым решением будет отключить режим эмуляции сразу после соединения,
$conn->setAttribute( PDO::ATTR_EMULATE_PREPARES, false );
и после этого данный код сразу заработает без ошибок.

Комментариев нет:

Отправить комментарий