PHP: «Команды не синхронизированы», если я снова использую mysqli :: query () после вызова хранимой процедуры, дающей результаты

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

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>";
}

Примечательно, что если я поменяю местами два запроса (т.е. я вызываю хранимую процедуру в конце), он работает без каких-либо ошибка. Для close () результат перед вторым запросом не помогает. Некоторые подсказки?

РЕДАКТИРОВАТЬ: mysqli :: error (): «Команды не синхронизированы; сейчас вы не можете запустить эту команду ».

6
задан etuardu 15 February 2011 в 14:14
поделиться