I mysqli::query Om du använder MYSQLI_USE_RESULT kommer alla efterföljande anrop att returnera felkommandon osynkroniserade om du inte anropar mysqli_free_result()
När du anropar flera lagrade procedurer kan du stöta på följande fel:"Kommandon är osynkroniserade; du kan inte köra det här kommandot nu". Detta kan hända även när du använder close()-funktionen på resultatobjektet mellan anrop. problemet, kom ihåg att anropa funktionen next_result() på mysqli-objektet efter varje lagrad proceduranrop. Se exempel nedan:
<?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();
?>
Jag hoppas att detta kommer att hjälpa