Erreur "Commande désynchronisée" en PHP
Lors de l'exécution de plusieurs requêtes MySQL à l'aide de mysqli, vous pouvez rencontrer l'erreur « Commande désynchronisée ; vous ne pouvez pas exécuter cette commande maintenant ». Cette erreur se produit car mysqli utilise par défaut des requêtes sans tampon, ce qui signifie que les résultats de la première requête doivent être récupérés avant que les requêtes suivantes ne soient exécutées.
Raison de l'erreur
Dans le code PHP fourni, deux requêtes MySQL sont en cours d'exécution :
$data = $con->query($countQuery)
$rows = getRowsByArticleSearch("test", "Auctions", " ")
Cette erreur est très probablement déclenchée lorsqu'une deuxième requête est exécutée avant que les résultats de la première requête ne soient récupérés.
Solution
Il existe deux manières de résoudre ce problème :
1. Obtenez les résultats de la première requête
Utilisez la méthode mysqli_fetch_*()
pour récupérer les résultats de la première requête avant d'exécuter la deuxième requête. Par exemple :
<code class="language-php">$data = $con->query($countQuery); $rowcount = $data->num_rows;</code>
2. Requête tamponnée
Utilisez mysqli_stmt::store_result()
pour activer la mise en mémoire tampon des requêtes. Cela amènera mysqli à stocker les résultats de la première requête avant d'exécuter la deuxième requête.
<code class="language-php">$numRecords->store_result();</code>
Autres consignes
$countQuery
qu'il y a une erreur de syntaxe dans la requête. Assurez-vous que la requête est construite correctement. mysqli::multi_query()
. Cette méthode gère automatiquement la mise en mémoire tampon et la synchronisation. 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!