Maison > base de données > tutoriel mysql > le corps du texte

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

Susan Sarandon
Libérer: 2024-10-25 00:57:02
original
154 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!