Maison > base de données > tutoriel mysql > Pourquoi est-ce que je reçois une erreur « Commandes désynchronisées » lors de l'exécution de plusieurs requêtes MySQL en PHP ?

Pourquoi est-ce que je reçois une erreur « Commandes désynchronisées » lors de l'exécution de plusieurs requêtes MySQL en PHP ?

Susan Sarandon
Libérer: 2025-01-23 00:51:09
original
333 Les gens l'ont consulté

Why Am I Getting a

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 :

  1. $data = $con->query($countQuery)
  2. $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>
Copier après la connexion

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>
Copier après la connexion

Autres consignes

  • L'erreur "près de '% ? %'" indique $countQuery qu'il y a une erreur de syntaxe dans la requête. Assurez-vous que la requête est construite correctement.
  • Si vous devez exécuter plusieurs requêtes simultanément, pensez à utiliser la méthode 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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal