Maison > développement back-end > tutoriel php > Comment résoudre l'erreur « Commandes désynchronisées » dans MySQLi ?

Comment résoudre l'erreur « Commandes désynchronisées » dans MySQLi ?

Patricia Arquette
Libérer: 2024-12-02 07:57:09
original
814 Les gens l'ont consulté

How to Resolve the

Erreur de commandes désynchronisées dans MySQLi

Votre code, qui implique plusieurs requêtes MySQLi, rencontre l'erreur « Commandes désynchronisées ». Cette erreur se produit car le client MySQL interdit l'exécution de nouvelles requêtes alors qu'il reste encore des lignes à récupérer à partir d'une requête en cours.

Comprendre le problème

Le client MySQL implémente un protocole strict qui garantit que les requêtes sont exécutées dans l'ordre. Lorsque vous avez des requêtes ou des procédures imbriquées qui renvoient plusieurs jeux de résultats, le protocole vous impose de récupérer toutes les lignes d'un jeu de résultats avant d'exécuter la requête suivante. Cependant, dans votre cas, vous essayez d'exécuter une nouvelle requête alors qu'il reste encore des lignes à récupérer de la précédente.

Solutions

Il existe deux principales approches pour résoudre le problème :

  1. Résultats de pré-récupération : Utiliser mysqli_store_result() ou mysqli_result::fetch_all() pour mettre en mémoire tampon les résultats de la requête externe dans le client MySQL. Cela vous permettra d'exécuter d'autres requêtes sans rencontrer l'erreur.
  2. Gérer plusieurs ensembles de résultats : Si votre procédure stockée renvoie plusieurs ensembles de résultats, vous devez utiliser mysqli_multi_query() et faire une boucle jusqu'à mysqli_next_result () n'indique plus de résultats. Cela garantit que vous respectez le protocole MySQL.

Considérations alternatives sur le stockage des données

Pour les données hiérarchiques, vous pouvez envisager de les stocker différemment pour simplifier les requêtes. Par exemple, vous pouvez utiliser des listes de contiguïté ou des modèles d'ensembles imbriqués.

Notes supplémentaires

Dans CodeIgnitor 3.0.3, vous pouvez résoudre l'erreur « Commandes désynchronisées » en modifiant la méthode _execute() dans system/database/drivers/mysqli/mysqli_driver.php.

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.cn
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