Maison >développement back-end >tutoriel php >Pourquoi est-ce que j'obtiens des erreurs « Commandes non synchronisées » dans mon code PHP MySQLi et comment puis-je les corriger ?

Pourquoi est-ce que j'obtiens des erreurs « Commandes non synchronisées » dans mon code PHP MySQLi et comment puis-je les corriger ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-20 11:06:09402parcourir

Why Do I Get

Commandes désynchronisées : analyse de la cause et de la résolution

Lorsque vous essayez d'exécuter du code PHP qui utilise des requêtes MySQL via MySQLi, vous pouvez rencontrez l'erreur « Commandes désynchronisées ; vous ne pouvez pas exécuter cette commande maintenant. » Cette erreur indique un conflit entre l'exécution séquentielle des requêtes de base de données.

Le code PHP fourni présente ce problème en raison de l'utilisation de requêtes sans tampon par mysqli pour les instructions préparées. Cela signifie que seuls les résultats de la requête exécutée la plus récemment sont disponibles à un moment donné.

Pour résoudre cette erreur, deux approches peuvent être adoptées :

  1. Utiliser le résultat du magasin : En appelant $stmt->store_result() après l'exécution d'une instruction préparée, les résultats de cette requête sont mis en mémoire tampon. Cela permet d'exécuter les requêtes suivantes sans affecter les résultats de la première requête.
  2. Récupérer les résultats dans un tableau : Alternativement, les résultats de la première requête peuvent être récupérés dans un tableau en utilisant $stmt-> ;fetch_all(). Cela précharge les données en mémoire, libérant ainsi la connexion pour exécuter d'autres requêtes.

Dans le code fourni, $stmt->store_result() peut être utilisé après la première requête pour mettre ses résultats en mémoire tampon :

if ($numRecords = $con->prepare($countQuery)) {
    $numRecords->bind_param("s", $brand);
    $numRecords->execute();
    $numRecords->store_result();
    $data = $con->query($countQuery) or die(print_r($con->error));
    $rowcount = $data->num_rows;
    ...
}

En implémentant l'une de ces solutions, les commandes ne seront plus désynchronisées et le code PHP devrait s'exécuter avec succès.

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