note 102903 deleted from mysqli.query by danbrown
| From: | danbrown@php.net | Date: | Mon, 14 Mar 2011 14:45:29 +0000 |
| Subject: | note 102903 deleted from mysqli.query by danbrown | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-177852@lists.php.net to get a copy of this message | ||
Note Submitter: petrus.jvr
----
When calling multiple stored procedures, you can run into the following error: "Commands out of
sync; you can't run this command now".
This can happen even when using the close() function on the result object between calls.
To fix the problem, remember to call the next_result() function on the mysqli object after each
stored procedure call. See example below:
// 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();