In mysqli::query Wenn Sie MYSQLI_USE_RESULT verwenden, werden alle nachfolgenden Aufrufe den Fehler Commands out of sync zurückgeben, es sei denn, Sie rufen mysqli_free_result()
aufBeim Aufrufen mehrerer gespeicherter Prozeduren kann der folgende Fehler auftreten:„Befehle nicht synchron; Sie können diesen Befehl jetzt nicht ausführen“. Dies kann auch dann passieren, wenn zwischen Aufrufen die Funktion close () für das Ergebnisobjekt verwendet wird Um das Problem zu beheben, denken Sie daran, nach jedem Aufruf einer gespeicherten Prozedur die Funktion next_result() für das mysqli-Objekt aufzurufen. Siehe Beispiel unten:
<?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();
?>
Ich hoffe, das wird helfen