Aquí es una instantánea de mi código:¿Cómo aplicar el método bindValue en la cláusula LIMIT?
$fetchPictures = $PDO->prepare("SELECT *
FROM pictures
WHERE album = :albumId
ORDER BY id ASC
LIMIT :skip, :max");
$fetchPictures->bindValue(':albumId', $_GET['albumid'], PDO::PARAM_INT);
if(isset($_GET['skip'])) {
$fetchPictures->bindValue(':skip', trim($_GET['skip']), PDO::PARAM_INT);
} else {
$fetchPictures->bindValue(':skip', 0, PDO::PARAM_INT);
}
$fetchPictures->bindValue(':max', $max, PDO::PARAM_INT);
$fetchPictures->execute() or die(print_r($fetchPictures->errorInfo()));
$pictures = $fetchPictures->fetchAll(PDO::FETCH_ASSOC);
consigo
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''15', 15' at line 1
Parece que DOP está añadiendo comillas simples a mi variables en la parte límite del código SQL. Lo busqué Encontré este error, que creo que está relacionado: http://bugs.php.net/bug.php?id=44639
¿Es eso lo que estoy viendo? ¡Este error se ha abierto desde abril de 2008! ¿Qué se supone que debemos hacer mientras tanto?
Necesito construir algo de paginación, y necesito asegurarme de que los datos estén limpios, sql injection-safe, antes de enviar la declaración sql.
[Aquí hay una consulta relacionada pero con bindParam en su lugar] (http://stackoverflow.com/questions/15853266/pdo-bindparam-not-allowing-statement-to-return-results) –
Respuesta digna de atención en una pregunta duplicada : [Consulta PDO parametrizada y cláusula \ 'LIMIT \ '- no funciona \ [duplicado \] (agosto de 2013; por Bill Karwin)] (http://stackoverflow.com/a/18006026/367456) – hakre