Вышеуказанный вызов подготовит следующий набор результатов, и вы не получите ошибок синхронизации.
я есть хранимая процедура в моей БД, которая возвращает все записи в таблице:
CREATE PROCEDURE showAll()
BEGIN
SELECT * FROM myTable;
END
SP работает так, как и ожидалось. Но, если я вызываю его в php-скрипте, а затем снова пытаюсь выполнить запрос к базе данных, он всегда терпит неудачу:
// $mysqli is a db connection
// first query:
if (!$t = $mysqli->query("call showAll()"))
die('Error in the 1st query');
while ($r = $t->fetch_row()) {
echo $r[0] . "<br>"; // this is ok
}
$t->free(); // EDIT (this doesn't help anyway)
// second query (does the same thing):
if (!$t = $mysqli->query("SELECT * from myTable"))
die('Error in the 2nd query'); // I always get this error
while ($r = $t->fetch_row()) {
echo $r[0] . "<br>";
}
Примечательно, что если я поменяю местами два запроса (то есть в конце вызову хранимую процедуру), это будет работать без каких-либо ошибок. Закрыть () результат до второго запроса не помогает. Некоторые намеки?
РЕДАКТИРОВАТЬ: mysqli :: error (): «Команды не синхронизированы; Вы не можете запустить эту команду сейчас ».