Вышеуказанный вызов подготовит следующий набор результатов, и вы не получите ошибок синхронизации.

я есть хранимая процедура в моей БД, которая возвращает все записи в таблице:

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 (): «Команды не синхронизированы; Вы не можете запустить эту команду сейчас ».

Ответы на вопрос(2)

Ваш ответ на вопрос