Maison >développement back-end >tutoriel php >Pourquoi est-ce que je reçois une erreur « Commandes non synchronisées » dans MySQLi ?

Pourquoi est-ce que je reçois une erreur « Commandes non synchronisées » dans MySQLi ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-08 03:42:13507parcourir

Why am I Getting a

Pourquoi MySQLi donne-t-il une erreur « Commandes désynchronisées » ?

Le client MySQL ne vous permet pas d'exécuter une nouvelle requête alors qu'il reste encore des lignes à récupérer à partir d'une requête en cours. Reportez-vous à la documentation MySQL sur les erreurs courantes pour plus d'informations sur les « Commandes non synchronisées ».

Solution :

Utilisez mysqli_store_result() pour pré-récupérer toutes les lignes de la requête externe. Cela les mettra en mémoire tampon dans le client MySQL, de sorte que le serveur pense que votre application a récupéré l'intégralité du jeu de résultats. Vous pouvez ensuite exécuter plus de requêtes, même dans une boucle de récupération de lignes à partir du jeu de résultats externe désormais mis en mémoire tampon.

Vous pouvez également utiliser mysqli_result::fetch_all(), qui renvoie le jeu de résultats complet sous forme de tableau PHP. Vous pouvez ensuite parcourir ce tableau.

Cas particulier pour les procédures stockées :

Les procédures stockées peuvent renvoyer plusieurs ensembles de résultats, chacun avec son propre ensemble de lignes. Par conséquent, il est nécessaire d'utiliser mysqli_multi_query() et de boucler jusqu'à ce que mysqli_next_result() ne renvoie plus de jeux de résultats supplémentaires. Ceci est nécessaire pour satisfaire le protocole MySQL, même si votre procédure stockée n'a qu'un seul jeu de résultats.

Remarque :

Les requêtes imbriquées sont souvent utilisées pour représenter des hiérarchies dans données, mais une méthode alternative avec une interrogation plus simple pourrait être préférable. Pensez à stocker vos données différemment pour faciliter les requêtes.

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