Commandes PHP désynchronisées : résoudre le dilemme
Lorsque vous travaillez avec PHP et MySQLi pour récupérer des données d'une base de données MySQL, exécutez plusieurs Les instructions peuvent parfois conduire à l'erreur : "Commandes désynchronisées, vous ne pouvez pas exécuter la commande maintenant."
La cause et la solution
Cette erreur se produit lorsque l'objet de connexion ($mysqli) a des résultats en attente d'une requête précédente. Pour le résoudre, vous devez appeler la fonction next_result() sur l'objet $mysqli après chaque instruction préparée.
Considérez cet exemple :
$stmt = $mysqli->prepare("SELECT id, username, password, firstname, lastname, salt FROM members WHERE email = ? LIMIT 1"); $stmt->bind_param('s', $loweredEmail); $stmt->execute(); $stmt->store_result(); $stmt->bind_result($user_id, $username, $db_password, $firstname, $lastname, $salt); $stmt->fetch(); $stmt->free_result(); $stmt->close(); while ($mysqli->more_results()) { $mysqli->next_result(); } $stmt1 = $mysqli->prepare("SELECT privileges FROM delegations WHERE id = ? LIMIT 1"); $stmt1->bind_param('s', $user_id); // This is where the error occurs $stmt1->execute();
Dans ce code, l'erreur sera lancé lors de l'exécution de la deuxième instruction ($stmt1). Pour résoudre ce problème, ajoutez la ligne suivante avant d'exécuter $stmt1 :
$mysqli->next_result();
Conseils supplémentaires
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!