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
582 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!

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