Erreur « Commandes désynchronisées » dans le code PHP avec les requêtes MySQL
Lors de l'exécution d'un script PHP impliquant plusieurs requêtes MySQL à l'aide de mysqli, une erreur peut se produire : "Commandes désynchronisées ; vous ne pouvez pas exécuter cette commande maintenant." Ce problème survient lorsque des requêtes ultérieures sont tentées avant de récupérer et de traiter les résultats de la requête précédente ou de vider le cache des commandes de requête du serveur MySQL.
Le code fourni dans la question exécute deux requêtes : une pour compter les enregistrements et une autre. pour récupérer des lignes en fonction d'une chaîne de recherche. Cependant, avant que les résultats de la première requête ne soient récupérés, la deuxième requête est exécutée. Cela déclenche l'erreur « désynchronisation ».
Causes de l'erreur
Solutions possibles
Exemple
Voici un exemple de mise en mémoire tampon des résultats de la première requête à l'aide de $stmt->store_result() :
<?php $con = mysqli_connect("localhost", "user", "password", "db"); $brand ="o"; $countQuery = "SELECT ARTICLE_NO FROM AUCTIONS WHERE upper(ARTICLE_NAME) LIKE % ? %"; $con->query("SET NAMES 'utf8'"); if ($numRecords = $con->prepare($countQuery)) { $numRecords->bind_param("s", $brand); $numRecords->execute(); $numRecords->store_result(); // Buffer the results $data = $con->query($countQuery) or die(print_r($con->error)); $rowcount = $data->num_rows; }
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!