Maison > base de données > tutoriel mysql > Qu'est-ce qui peut provoquer l'erreur SQLSTATE[HY000] : générale : 2031 dans PDO ?

Qu'est-ce qui peut provoquer l'erreur SQLSTATE[HY000] : générale : 2031 dans PDO ?

Susan Sarandon
Libérer: 2024-10-24 17:02:02
original
763 Les gens l'ont consulté

What Can Cause the SQLSTATE[HY000]: General error: 2031 in PDO?

Erreur : Erreur PDO : SQLSTATE[HY000] : Erreur générale : 2031

Cette erreur indique qu'il y a un problème avec les paramètres de une requête SQL. Dans ce cas, il semble que le problème provienne de la méthode bindValue() utilisée pour ajouter manuellement des espaces réservés LIMIT à la requête.

Le code suivant est à l'origine de l'erreur :

<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

L'erreur se produit car la requête contient des espaces réservés (:page et :entries_per_page) qui doivent être liés à l'aide de bindValue() avant que la requête puisse être exécutée. Cependant, avant d'utiliser bindValue() pour lier les espaces réservés LIMIT, le moteur les transforme en chaînes. Pour résoudre ce problème, vous pouvez utiliser le code suivant :

<code class="php">if ($limit) {
   $query = str_replace(':page', $page - 1, $query);
   $query = str_replace(':entries_per_page', $page * $entries_per_page, $query);
   $sth->execute($criteria);
}</code>
Copier après la connexion

Ce code remplacera les espaces réservés dans la requête par leurs valeurs avant d'exécuter la requête.

Attention aux doublons Noms des paramètres

Il est important de noter que l'erreur 2031 peut également être provoquée par la liaison de deux valeurs au même nom de paramètre. Par exemple :

<code class="php">$sth->bindValue(':colour', 'blue');
$sth->bindValue(':colour', 'red');</code>
Copier après la connexion

L’utilisation deux fois du même nom de paramètre entraînera l’erreur. Par conséquent, il est important de s'assurer que chaque nom de paramètre est unique.

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