Mysql
 sql >> Base de données >  >> RDS >> Mysql

Erreur de synchronisation des commandes PHP

Dans mysqli ::query Si vous utilisez MYSQLI_USE_RESULT, tous les appels suivants renverront une erreur Commandes désynchronisées sauf si vous appelez mysqli_free_result()

Lors de l'appel de plusieurs procédures stockées, vous pouvez rencontrer l'erreur suivante :"Commandes désynchronisées ; vous ne pouvez pas exécuter cette commande maintenant". Cela peut se produire même lorsque vous utilisez la fonction close() sur l'objet de résultat entre les appels.Pour corriger le problème, n'oubliez pas d'appeler la fonction next_result() sur l'objet mysqli après chaque appel de procédure stockée. Voir exemple ci-dessous :

<?php
// New Connection
$db = new mysqli('localhost','user','pass','database');

// Check for errors
if(mysqli_connect_errno()){
 echo mysqli_connect_error();
}

// 1st Query
$result = $db->query("call getUsers()");
if($result){
     // Cycle through results
    while ($row = $result->fetch_object()){
        $user_arr[] = $row;
    }
    // Free result set
    $result->close();
    $db->next_result();
}

// 2nd Query
$result = $db->query("call getGroups()");
if($result){
     // Cycle through results
    while ($row = $result->fetch_object()){
        $group_arr[] = $row;
    }
     // Free result set
     $result->close();
     $db->next_result();
}
else echo($db->error);

// Close connection
$db->close();
?>

J'espère que cela vous aidera