Erreur PHP MySQL : commande désynchronisée
Votre code PHP tente d'exécuter deux requêtes MySQL à l'aide de mysqli, mais rencontre l'erreur « Commandes désynchronisées ; vous ne pouvez pas exécuter cette commande maintenant ». Cela est dû au fait que les requêtes d'instructions préparées par MySQLi sont par défaut en mode sans tampon.
Source d'erreur
mysqli exécute les requêtes en mode sans tampon par défaut, ce qui signifie que l'ensemble de résultats n'est pas stocké en mémoire mais diffusé directement au client. Puisque vous avez utilisé deux requêtes, la première requête exécute et diffuse le jeu de résultats. Cependant, avant d’obtenir les résultats de la première requête, vous essayez d’exécuter la deuxième requête. Cela entraîne une erreur "commande désynchronisée" car mysqli vous demande d'obtenir les résultats de la première requête avant d'exécuter la deuxième requête.
Solution : Requête tamponnée
Pour résoudre ce problème, vous devez mettre la requête en mémoire tampon. Vous pouvez utiliser la méthode store_result()
de l'objet instruction préparée :
$numRecords->execute(); $numRecords->store_result();
En mettant les requêtes en mémoire tampon, mysqli stocke l'ensemble de résultats de la première requête en mémoire, vous permettant de le récupérer ultérieurement sans entrer en conflit avec l'exécution de la deuxième requête.
Autres notes
Dans votre code, vous essayez également d'exécuter différentes requêtes dans une boucle foreach :
$result = $con->query($recordsQuery); $rows = array(); while($row = $result->fetch_assoc()) { $rows[] = $row; }
Ceci n'est en fait pas nécessaire puisque vous stockez déjà les résultats de la requête dans une variable nommée $rows
. Vous pouvez utiliser cette variable directement dans la boucle pour accéder aux lignes récupérées.
En implémentant ces modifications, vous devriez pouvoir exécuter des requêtes MySQL sans rencontrer d'erreurs de « commande désynchronisée ».
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!