Maison > base de données > tutoriel mysql > Comment résoudre l'erreur « Commandes non synchronisées » dans MySQLi lors de l'utilisation de requêtes imbriquées ?

Comment résoudre l'erreur « Commandes non synchronisées » dans MySQLi lors de l'utilisation de requêtes imbriquées ?

Linda Hamilton
Libérer: 2024-12-08 07:29:10
original
536 Les gens l'ont consulté

How to Resolve the

Erreur : "Commandes non synchronisées" lors de l'utilisation de MySQLi

Problème :

Un tenter d'exécuter plusieurs requêtes MySQLi simultanément déclenche l'erreur "Commandes désynchronisées". Les requêtes imbriquées récupèrent des données hiérarchiques.

Cause :

MySQL n'autorise pas l'exécution de nouvelles requêtes tant que les lignes d'une requête en cours ne sont pas récupérées.

Solution :

Option 1 : Utilisez mysqli_store_result()

$result = mysqli_store_result($db);
// Execute subsequent queries
Copier après la connexion

Cela met en mémoire tampon les lignes du client MySQL, permettant ainsi l'exécution de plusieurs requêtes.

Option 2 : Utiliser mysqli_result::fetch_all()

$result = mysqli_query($db, $sql);
$data = mysqli_fetch_all($result, MYSQLI_ASSOC);
// Execute subsequent queries
Copier après la connexion

Cela renvoie l'ensemble des résultats sous forme de tableau, permettant l'exécution de plusieurs requêtes.

Considération :

Les requêtes imbriquées indiquent un stockage de données hiérarchique. Envisagez des modèles de données alternatifs ou utilisez des frameworks comme CodeIgnitor pour gérer plusieurs ensembles de résultats à partir de procédures stockées à l'aide de mysqli_next_result().

Implémentation de CodeIgnitor :

// Edit code in system/database/drivers/mysqli/mysqli_driver.php
protected function _execute($sql)
{
    $results = $this->conn_id->query($this->_prep_query($sql));
    @mysqli_next_result($this->conn_id); // Fix 'command out of sync' error
    return $results;
}
Copier après la connexion

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