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

131
07 мая 2019, 16:20

Почему выдает ошибку при таком запросе?

<?php 
    $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

Answer 1

В режиме эмуляции все переданные через execute() переменные PDO подставляет в запрос как строки, и в итоге запрос получается

LIMIT '10', '1'

что вызывает ошибку. Самым простым решением будет отключить режим эмуляции сразу после соединения,

$conn->setAttribute( PDO::ATTR_EMULATE_PREPARES, false ); 

и после этого данный код сразу заработает без ошибок.

READ ALSO
Как передать переменную через роут в посредник Laravel?

Как передать переменную через роут в посредник Laravel?

Есть роут вывода товаров с переменной $id категории, которую надо передать через посредник в контроллер и вывести товарыПосредник проверяет...

141
Заполнение данных в html из php по id

Заполнение данных в html из php по id

Ребята, помогите, пожалуйстаЕсть html с таблицей

130
Не работает условие php mysql pdo

Не работает условие php mysql pdo

Подскажите пожалуйста, почему не работает данное условие?

133
PHP: Не работает скрипт авторизации

PHP: Не работает скрипт авторизации

Не работает скриптТочнее не происходит авторизация

139