[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Mysqli - не работает вызов хранимых процедур!
LDPRSL
Для вызова хранимых процедур, пользуюсь mysqli.
Но при вызове нескольких процедур подряд, начинает выдавать ошибку:
Commands out of sync; you can't run this command now

Google говорит - Это может произойти, например, если используется mysql_use_result() и делается попытка выполнить новый запрос до того, как вызвана mysql_free_result(), или если клиент пытается выполнить два возвращающих данные запроса без обращения к mysql_use_result() либо mysql_store_result() в промежутке между ними

Делаю и free_result и store_result! Но не помогает!

Пример:
Код
$link = mysqli_connect("localhost", "project", "project2323", "proj");
$result = mysqli_query($link, "CALL get_object_event('30')");
while($row = mysqli_fetch_assoc($result)) print_r($row);
mysqli_free_result($result);
$result = mysqli_query($link, "CALL get_object_event('39')");


На втором вызове обламывается.

В чем может быть проблема? Помогите разобраться.

_____________
Viking
ну дык ты mysqli_fetch_assoc($result) делаешь в цикле а mysqli_free_result($result); после цикла
вставь mysqli_free_result($result); в цикл
Код
$link = mysqli_connect("localhost", "project", "project2323", "proj");
$result = mysqli_query($link, "CALL get_object_event('30')");
while($row = mysqli_fetch_assoc($result)) {print_r($row);
mysqli_free_result($result);}
$result = mysqli_query($link, "CALL get_object_event('39')");


_____________
Нужно все делать настолько просто, насколько возможно, но не проще.
Альберт Германович
LDPRSL
Цитата(Viking @ 9.7.2008, 13:46) [snapback]42825[/snapback]
ну дык ты mysqli_fetch_assoc($result) делаешь в цикле а mysqli_free_result($result); после цикла
вставь mysqli_free_result($result); в цикл
Код
$link = mysqli_connect("localhost", "project", "project2323", "proj");
$result = mysqli_query($link, "CALL get_object_event('30')");
while($row = mysqli_fetch_assoc($result)) {print_r($row);
mysqli_free_result($result);}
$result = mysqli_query($link, "CALL get_object_event('39')");


Если я добавлю освобождение памяти в цикл, то цикл обвалится после первой итерации


_____________
LDPRSL
Всем спасибо.
Ответ можно посмотреть по ссылке: http://habrahabr.ru/blog/webdev/37188.html

_____________
Гость_weber
Я бы предложил следующий код:

$link = mysqli_connect("localhost", "project", "project2323", "proj");
$result = mysqli_query($link, "CALL get_object_event('30')");
while($row = mysqli_fetch_assoc($result)) print_r($row);
mysqli_free_result($result);
$result=''; // или unset($result);
$result = mysqli_query($link, "CALL get_object_event('39')");
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.