Maison >développement back-end >tutoriel php >Comment corriger les erreurs « Commandes désynchronisées » dans les requêtes PHP MySQL ?
Commandes désynchronisées : résolution du problème en PHP
Lorsque vous travaillez avec plusieurs requêtes MySQL en PHP à l'aide de mysqli, vous pouvez rencontrer l'erreur : "Commandes désynchronisées ; vous ne pouvez pas exécuter cette commande maintenant." Cette erreur est due à l'utilisation de requêtes sans tampon, ce qui signifie que le résultat d'une requête doit être traité séquentiellement avant qu'une requête suivante puisse être exécutée.
Dans l'extrait de code fourni, vous exécutez une requête pour déterminer le nombre d'enregistrements ($numRecords) dans une table basée sur une clause LIKE. Cependant, la variable $data fait toujours référence au résultat de la requête précédente, qui n'est pas synchronisé.
Pour résoudre ce problème, vous avez deux options :
Après avoir exécuté $numRecords->execute(), récupérez le résultats dans un tableau en utilisant $data = $numRecords->get_result(). Cela stockera les résultats de la requête et vous permettra de continuer à exécuter d'autres requêtes.
Utilisez store_result( ) sur l'objet instruction après exécution ($numRecords->store_result()). Cela demandera à mysqli de mettre les résultats en mémoire tampon, vous permettant ainsi d'exécuter les requêtes suivantes sans erreur de désynchronisation.
Voici un extrait de code modifié utilisant la méthode get_result() :
$con->query("SET NAMES 'utf8'"); $brand ="o"; $countQuery = "SELECT ARTICLE_NO FROM AUCTIONS WHERE upper(ARTICLE_NAME) LIKE % ? %"; if ($numRecords = $con->prepare($countQuery)) { $numRecords->bind_param("s", $brand); $numRecords->execute(); // Fetch the result array into $data $data = $numRecords->get_result(); $rowcount = mysqli_num_rows($data); $rows = getRowsByArticleSearch("test", "Auctions", " "); $last = ceil($rowcount/$page_rows); } else { print_r($con->error); }
Remarque qu'une erreur de désynchronisation des commandes peut également se produire si vous exécutez une non-requête (par exemple, INSERT, UPDATE), puis essayez d'exécuter une requête qui récupère données de la même table sans fermer au préalable la connexion ni récupérer les résultats de la non-requête. Assurez-vous d'avoir fermé la connexion ou traité les résultats des requêtes précédentes avant d'exécuter les requêtes suivantes.
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!