Dépannage des erreurs « Commandes non synchronisées » dans les requêtes PHP MySQL
Lorsque vous travaillez avec PHP et MySQL, vous pouvez rencontrer l'erreur frustrante « Commandes désynchronisées ; vous ne pouvez pas exécuter cette commande maintenant ». Cela se produit généralement lors de l'exécution consécutive de plusieurs requêtes MySQL sans gestion appropriée de leur nature asynchrone. Le principal problème réside dans le comportement par défaut sans tampon des mysqli
requêtes.
Il existe deux solutions efficaces pour résoudre ce problème :
Traitez les résultats de la première requête : Exécutez votre requête initiale à l'aide de $con->query()
et stockez les résultats dans un tableau. Les opérations suivantes doivent ensuite parcourir ce tableau, garantissant que chaque action est effectuée indépendamment.
Employer la mise en mémoire tampon de requête : Utilisez la méthode store_result()
dans votre instruction préparée. Cela oblige mysqli
à mettre en mémoire tampon les résultats de la requête, évitant ainsi le problème des « Commandes désynchronisées » en évitant la récupération de lignes à la demande.
Voici un exemple illustrant la mise en mémoire tampon des requêtes :
<code class="language-php">$countQuery = "SELECT ARTICLE_NO FROM AUCTIONS WHERE upper(ARTICLE_NAME) LIKE % ?%"; if ($numRecords = $con->prepare($countQuery)) { $numRecords->bind_param("s", $brand); $numRecords->execute(); $numRecords->store_result(); // Buffer the results $data = $con->query($countQuery); $rowcount = $data->num_rows; // Proceed with your application logic }</code>
N'oubliez pas que l'activation de la mise en mémoire tampon des requêtes peut augmenter la consommation de mémoire lorsque vous traitez des ensembles de données volumineux. Choisissez la méthode la mieux adaptée à votre volume de données et aux exigences de votre application.
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!