I'm trying to run three MySQL queries from a PHP script, the first one works fine, but on the second one I get the "Commands out of sync; you can’t run this command now" error. I have managed to understand that I need to "empty" the resultset before preparing a new query but I can't seem to understand how. I thought that $statement-close; would do that for me. Here is the relevant part of the code:
<?php
$statement = $db_conn->prepare("CALL getSketches(?,?)"); // Prepare SQL routine to check if user is accepted
$statement->bind_param("is", $user_id, $loaded_sketches); // Bind variables to send
$statement->execute(); // Execute the query
$statement->bind_result( // Set return varables
$id, $name,
$description,
$visibility,
$createdby_id,
$createdby_name,
$createdon,
$permission
);
$new_sketches_id = array();
while($statement->fetch()) {
$result['newSketches'][$id] = array(
"name" => $name,
"description" => $description,
"visibility" => $visibility,
"createdById" => $createdby_id,
"createdByName" => $createdby_name,
"createdOn" => $createdon,
"permission" => $permission
);
$new_sketches_id[] = $id;
}
$statement->close; // Close satement
$new_sketches_ids = implode(",", $new_sketches_id);
// Get the new sketches elements
$statement = $db_conn->prepare("CALL getElements(?,'',?,'00000000000000')"); // Prepare SQL routine to check if user is accepted
// The script crashes here with $db_conn->error
// "Commands out of sync; you can't run this command now"
$statement->bind_param("si", $new_sketches_ids, $user_id); // Bind variables to send
$statement->execute(); // Execute the query
$statement->bind_result( // Set return varables
$id,
$user_id,
$type,
$attribute_d,
$attribute_stroke,
$attribute_strokeWidth,
$sketch_id,
$createdon
);
while($statement->fetch()) {
$result['newSketches'][$sketch_id]['newElements']["u".$user_id."e".$id] = array(
"type" => $type,
"d" => $attribute_d,
"stroke" => $attribute_stroke,
"strokeWidth" => $attribute_strokeWidth,
);
}
$statement->close; // Close satement
?>
How can I make the second query without closing and reopening the entire database connection?