Maison >développement back-end >tutoriel php >Pourquoi est-ce que je reçois une erreur « Commandes désynchronisées » dans MySQLi lors de la récupération de données hiérarchiques ?

Pourquoi est-ce que je reçois une erreur « Commandes désynchronisées » dans MySQLi lors de la récupération de données hiérarchiques ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-06 09:31:121048parcourir

Why Am I Getting a

Erreur de commandes MySQL désynchronisées lors de la récupération de la hiérarchie

On peut rencontrer l'erreur "Commandes désynchronisées" lors de la tentative d'exécution de plusieurs MySQLi requêtes, notamment lors de la récupération de données hiérarchiques. Cet article se penche sur le problème, explique sa cause et propose des solutions potentielles.

Cause première

Le client MySQL restreint l'exécution de nouvelles requêtes tant que les lignes ne sont pas extraites d'un requête en cours. Cette erreur provient du protocole du client, garantissant que toutes les lignes sont récupérées de manière séquentielle avant de procéder à de nouvelles requêtes.

Solutions possibles

Pour résoudre ce problème, plusieurs options sont disponibles :

1. Utilisation de mysqli_store_result()

Cette méthode pré-extrait toutes les lignes de la requête externe dans un tampon client. Le serveur MySQL reconnaît la récupération complète des résultats, permettant ainsi l'exécution libre des requêtes suivantes.

2. En utilisant mysqli_result::fetch_all()

Similaire à mysqli_store_result(), cette méthode récupère l'ensemble des résultats sous forme de tableau PHP, permettant une boucle et une récupération efficaces des données.

3. Utilisation de mysqli_multi_query() pour les procédures stockées

Les procédures stockées ont le potentiel de renvoyer plusieurs ensembles de résultats, chacun contenant ses propres lignes. mysqli_multi_query() doit être utilisé pour parcourir ces ensembles de résultats, en les traitant de manière séquentielle et en adhérant au protocole MySQL.

Stockage de données alternatif

Pour éviter les inconvénients des requêtes dans la récupération de données hiérarchiques, envisagez de restructurer les données pour des requêtes plus simples. Des techniques telles que les listes de contiguïté ou les ensembles imbriqués peuvent simplifier considérablement les hiérarchies.

Piratage personnalisé pour CodeIgnitor 3.0.3

Pour les utilisateurs de CodeIgnitor 3.0.3, une solution de contournement consiste à modifier la ligne 262 du fichier mysqli_driver.php. En ajoutant @mysqli_next_result() à la méthode _execute(), l'erreur « commande désynchronisée » peut être atténuée.

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