Maison > développement back-end > tutoriel php > Comment corriger l'erreur « Commandes non synchronisées » de MySQLi ?

Comment corriger l'erreur « Commandes non synchronisées » de MySQLi ?

Patricia Arquette
Libérer: 2024-12-08 18:24:12
original
549 Les gens l'ont consulté

How to Fix MySQLi's

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);
Copier après la connexion

À l'aide mysqli_fetch_all() :

$result = mysqli_query($db, $sql)->fetch_all();
Copier après la connexion

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
}
Copier après la connexion

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;
}
Copier après la connexion

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