Causes de l'erreur MySQL 2014 : impossible d'exécuter des requêtes alors que d'autres requêtes sans tampon sont actives
Cette erreur se produit lors de la tentative d'exécution d'une nouvelle requête avant compléter le traitement des résultats d'une requête précédente sans tampon. Le protocole client de MySQL ne permet pas à plusieurs requêtes d'être simultanément « en cours ».
Solution :
-
Utiliser PDO::fetchAll() : Cette méthode récupère implicitement tous les résultats de la requête précédente, permettant l'exécution de la suivante query.
-
Activer la mise en mémoire tampon des requêtes : définissez PDO::MYSQL_ATTR_USE_BUFFERED_QUERY sur true, ce qui oblige la bibliothèque cliente à mettre les résultats en mémoire tampon en interne au lieu de PHP.
-
CloseCursors : Appelez closeCursor() pour informer le serveur que vous avez fini de récupérer les résultats d'un requête.
Recommandations supplémentaires :
- Déplacez le code invariant de boucle en dehors des boucles : évitez d'exécuter à plusieurs reprises une requête qui renvoie le même résultat dans un boucle.
- Utilisez des paramètres nommés pour les instructions préparées afin de simplifier le passage des paramètres.
- Envisagez d'utiliser Bibliothèque client mysqlnd pour des fonctionnalités et une efficacité améliorées.
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