2016-05-11 4 views
0

Я создал процедуру (с помощью инструмента PHPMyAdmin), которая возвращает таблицу и два выхода. Если я выполнить процедуру с помощью кнопки «Выполнить» из PHPMyAdmin он посылает запрос:MySQL Хранимые процедуры и PHPMyAdmin

SET @p0 = '12'; 
SET @p1 = '1'; 
CALL `getPhoneReview` (@p0 , @p1 , @p2 , @p3); 
SELECT @p2 AS `PhoneCount` , @p3 AS `ReviewCount`; 

Который возвращает то, что, как ожидается, (таблица и два выхода). Однако, если я копирую этот точный код и выполняю его из секции SQL, он выполняет только последнее предложение:

CALL `getPhoneReview` (@p0 , @p1 , @p2 , @p3) 

Что не возвращает ничего.

Это происходит также при попытке получить выходные значения с помощью PHP. У меня есть этот код:

$C = new MySQLi(...); 
$Q = $C->query("CALL getPhoneReview(12, 1, @PhoneCount, @ReviewCount)"); 
/* Looping over $Q works fine */ 
$PhoneCount = $C->query("SELECT @PhoneCount AS PhC"); 
$PCO = $PhoneCount->fetch_object(); 
var_dump($PCO->PhC); /* Call to a member function fetch_object() on boolean */ 

Может ли кто-нибудь мне помочь?

ответ

1

У вас есть две проблемы с кодом.

  • Во-первых, в вашем коде нет надлежащего сообщения об ошибках для mysqli, и у вас есть только уведомление от PHP, но не реальная ошибка от mysql. Вы можете прочитать, как правильно это сделать here.
  • Во-вторых, после вызова хранимой процедуры вы всегда должны звонить $C->next_result(); чтобы другие запросы выполнялись.
+0

Добавление $ C-> next_result() после того, как цикл решил проблему. Спасибо! – David103

Смежные вопросы