Voici un aperçu de mon code:Comment appliquer la méthode bindValue dans la clause 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);
Je reçois
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
Il semble que PDO ajoute des guillemets simples à mes variables dans la partie limite du code SQL. J'ai regardé vers le haut j'ai trouvé ce bogue que je pense est lié: http://bugs.php.net/bug.php?id=44639
Est-ce que c'est ce que je regarde? Ce bug a été ouvert depuis avril 2008! Que sommes-nous censés faire en attendant?
J'ai besoin de construire une pagination, et je dois m'assurer que les données sont propres, sans danger pour l'injection SQL, avant d'envoyer l'instruction sql.
[Voici une quité connexe mais avec bindParam à la place] (http://stackoverflow.com/questions/15853266/pdo-bindparam-not-allowing-statement-to-return-results) –
Réponse remarquable dans une question en double : [Requête PDO paramétrée et clause \ "LIMIT \' - ne fonctionne pas \ [doublon \] (août 2013; par Bill Karwin)] (http://stackoverflow.com/a/18006026/367456) – hakre