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 ?

Pourquoi PDO ajoute-t-il des guillemets aux variables de la clause LIMIT et comment puis-je y remédier ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-24 00:17:10252parcourir

Why Does PDO Add Quotes to LIMIT Clause Variables and How Can I Fix It?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn