Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Хранимые процедуры MySQL и "out of sync" 
:(
    Опции темы
smartov
Дата 6.3.2008, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



Сегодня очень долго выяснял причину, почему, после того, как я делаю MySQL запрос, в котором обращаюсь к хранимой процедуре (stored procedure) (MySQL 5+, mysqli driver)
Код
CALL procedureName()

то следующий за ним любой запрос не выполняется, а mysqli_error возвращает ошибку 
Код

Error "Commands out of sync; you can't run this command now" number "2014" in query:...

Судя по ошибке, создавалось впечатление, что утеряно соединение. Это и ввело в заблуждение и повело по ложному пути.

Как оказалось, все происходит от того, что моя процедура возвращает результат в виде таблицы - последней строкой процедуры является (предположим) 
Код

SELECT * FROM users;

Вследствие этого, запрос к MySQL базе получает в ответ <strong>множественный результат</strong>. И если "первый" результат я вытягиваю (как для обычного запроса), то "второй", который представляет из себя (bool)false - нет, и он остается в буффере.

В общем, чтобы избежать подобных проблем, после того, как вытащите первый результат (обычным для любого MySQL запроса способом), сбросьте ненужные, вытащив их из буффера результатов следующим образом:
Код

//Предположим что $connection - это ваш MySQLI объект
while ($connection->next_result()) $connection->store_result();


Огромное спасибо человеку под ником Evert, который оборвал мои долгие поиски ответом на этот вопрос.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0564 ]   [ Использовано запросов: 23 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.