2016-05-11 29 views
0

テーブルと2つの出力を返すプロシージャ(PHPMyAdminツールを使用)を作成しました。私はPHPMyAdminのの「実行」ボタンで手順を実行する場合は、このクエリを送信します。MySQLストアドプロシージャとPHPMyAdmin

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

(テーブルと2つの出力)期待されているものを返します。しかし、その正確なコードをコピーして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

コードには2つの問題があります。

  • 最初に、あなたのコードにmysqliに関する適切なエラー報告はなく、PHPからの通知だけがありますが、mysqlの実際のエラーはありません。あなたはそれを正しく作る方法を読むことができますhere
  • 第2に、ストアドプロシージャを呼び出した後、常に$C->next_result()を呼び出す必要があります。他のクエリが実行されるようにします。
+0

ループの後に$ C-> next_result()を追加すると問題が解決しました。ありがとうございました! – David103

関連する問題