Dépannage de l'erreur « Commandes désynchronisées » de MySQLi
L'erreur « Commandes désynchronisées » de MySQLi se produit lors de l'exécution des requêtes suivantes avant de récupérer toutes lignes de la requête précédente. Pour résoudre ce problème, assurez-vous de récupérer toutes les lignes avant d'exécuter des requêtes supplémentaires.
Cause de l'erreur :
Le client MySQL interdit l'exécution de nouvelles requêtes tant que les lignes ne sont pas récupérées d'un requête en cours. Il s'agit de maintenir l'intégrité des données et d'éviter les conflits entre plusieurs ensembles de résultats.
Solutions possibles :
1. Pré-récupérer les lignes à l'aide de mysqli_store_result() ou mysqli_fetch_all()
À l'aide de mysqli_store_result() :
$result = mysqli_store_result($db);
À l'aide mysqli_fetch_all() :
$result = mysqli_query($db, $sql)->fetch_all();
2. Utilisez mysqli_next_result() pour les procédures stockées
Si vous exécutez une procédure stockée, elle peut renvoyer plusieurs jeux de résultats. Dans de tels cas, utilisez mysqli_next_result() pour parcourir et compléter tous les ensembles de résultats avant d'exécuter des requêtes supplémentaires.
while ($result = mysqli_next_result($db)) { // process the result set }
3. Stockage alternatif des données pour les hiérarchies
Envisagez de stocker les données hiérarchiques différemment pour simplifier les requêtes. Explorez divers modèles de bases de données, tels que des listes de contiguïté ou des modèles d'ensembles imbriqués, pour optimiser la structure des données et améliorer l'efficacité des requêtes.
Remarque supplémentaire :
Pour les utilisateurs de CodeIgnitor, vous pouvez rencontrez cette erreur en raison d'un problème connu dans le pilote mysqli. Pour le résoudre, modifiez la fonction _execute() du pilote comme suit :
protected function _execute($sql) { $results = $this->conn_id->query($this->_prep_query($sql)); @mysqli_next_result($this->conn_id); // Fix 'command out of sync' error return $results; }
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!