Maison >base de données >tutoriel mysql >Pourquoi PDO ajoute-t-il des guillemets aux variables de la clause LIMIT et comment puis-je y remédier ?
Erreur dans la clause LIMIT avec la méthode bindValue
Lors d'une tentative d'implémentation de la pagination, un développeur a rencontré une erreur de syntaxe SQL lors de l'utilisation de la méthode bindValue avec la clause LIMIT. La requête a renvoyé une erreur indiquant que des guillemets simples étaient ajoutés aux variables dans la partie LIMIT.
Après une enquête plus approfondie, le développeur a découvert une relation potentielle avec un bug connu dans PHP (bugid 44639) qui avait été documenté. depuis 2008. Ce bug suggérait que PDO pourrait ajouter automatiquement des guillemets aux variables non-chaînes dans le LIMIT clause.
Solutions :
Une solution pour résoudre ce problème a été fournie en convertissant la valeur en un entier avant de la transmettre à la fonction de liaison. Avec cette modification, l'instruction SQL serait capable d'interpréter correctement les variables et d'exécuter la requête sans erreurs de syntaxe. L'extrait de code mis à jour ressemblerait à ce qui suit :
$fetchPictures->bindValue(':skip', (int) trim($_GET['skip']), PDO::PARAM_INT);
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!