Maison  >  Article  >  base de données  >  Comment résoudre l'erreur de liaison des paramètres PDO : \"SQLSTATE[HY000] : erreur générale : 2031\" ?

Comment résoudre l'erreur de liaison des paramètres PDO : \"SQLSTATE[HY000] : erreur générale : 2031\" ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-25 00:57:02155parcourir

How to Resolve PDO Parameter Binding Error:

Erreur de liaison de paramètre PDO : SQLSTATE[HY000] : Erreur générale 2031

Lors de l'utilisation de la bibliothèque PDO de PHP, vous pouvez rencontrer l'erreur frustrante " Erreur PDO : SQLSTATE[HY000] : Erreur générale : 2031." Cette erreur indique un problème avec la liaison des paramètres.

L'une des causes potentielles de cette erreur est la liaison de plusieurs valeurs à un seul nom de paramètre. Prenons l'exemple suivant :

<code class="php">if ($limit) {
   $sth->bindValue(':page', $page - 1, PDO::PARAM_INT);
   $sth->bindValue(':entries_per_page', $page * $entries_per_page, PDO::PARAM_INT);
}</code>

Dans ce code, la méthode bindValue() est utilisée pour lier manuellement deux valeurs au paramètre ':page'. Ceci est nécessaire car le moteur PDO convertira les espaces réservés (:placeholder) en chaînes si vous essayez de les utiliser directement dans la clause LIMIT.

Cependant, lier plusieurs valeurs au même nom de paramètre est incorrect et entraînera l'erreur "SQLSTATE[HY000] : Erreur générale : 2031".

Solution :

Pour résoudre cette erreur, assurez-vous que chaque nom de paramètre n'est utilisé qu'une seule fois pour la liaison . Dans votre exemple, vous devez déclarer des paramètres distincts pour les valeurs ':page' et ':entries_per_page'. Par exemple :

<code class="php">if ($limit) {
   $sth->bindValue(':page', $page - 1, PDO::PARAM_INT);
   $sth->bindValue(':limit', $page * $entries_per_page, PDO::PARAM_INT);
}</code>

Attention :

Il est important de noter que l'erreur « SQLSTATE[HY000] : Erreur générale : 2031 » peut également se produire si vous liez plusieurs valeurs au même nom de paramètre ailleurs dans votre code, même sans rapport avec les clauses LIMIT. Par conséquent, vérifiez toujours la liaison de vos paramètres pour vous assurer que chaque nom n'est utilisé qu'une seule fois.

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