2013-06-01 2 views
2
$pageMin = (($page * 10)-10); 

$reponse = $bdd->prepare('SELECT pseudo, message FROM minichat ORDER BY id DESC LIMIT ?, 10'); 
$reponse->execute(array($pageMin)); 

Похоже, заполнителей не работают ПРЕДЕЛ ...PDO выполнить() заявление с заполнителем в LIMIT

Когда я сцепить с pageMin он работает, например:

$reponse = $bdd->query('SELECT pseudo, message FROM minichat ORDER BY id DESC LIMIT' . $pageMin . ', 10'); 

или даже

$reponse = $bdd->prepare('SELECT pseudo, message FROM minichat ORDER BY id DESC LIMIT' . $pageMin . ', 10'); 
$reponse->execute(array()); 

Использование заполнителя, оно не возвращает мне никаких результатов, почему?

Благодарим за помощь.

+0

Я не уверен в реальном вопросе, но не буду «LIMIT». $ pageMin. '', если' $ pageMin' был, скажем,' 5 ', оценивается как 'LIMIT5' (без пробела)? Попробуйте сделать это 'LIMIT '. $ PageMin.'' – Scott

+0

Это просто ошибка ввода, она работает, когда я конкатенирую, моя проблема в том, когда я хочу использовать placeholders ex: LIMITE ?, 10, тогда это не сработает. –

+0

У меня нет ошибок, но мои результаты не очень хорошие (просто нет результатов) –

ответ

3

Когда вы передаете массив параметров execute, они обрабатываются как строки, а предел - int. Просто используйте bindValue с типом int.

$reponse->bindValue(1, $pageMin, PDO::PARAM_INT); 
+0

Спасибо, но для чего 1? В вашем примере –

+0

Ahh Я узнал, что это для первого заполнителя. –

Смежные вопросы