0

次のコードを使用して、PHPのSQLからデータを取得します

if ($q=$db->prepare("call p_test(?)")){
    $q->bind_param('s',$token);
    $q->execute();

    $q->bind_result($r1, $r2, $r3);

    if ($q->fetch()){
        echo $r1.
    }
}

上記のコードは、プロシージャを呼び出さない場合は正常に機能します。しかし、プロシージャを呼び出すために使用すると、結果セットに奇妙な問題が発生します。プロシージャが1つの列のみを返す場合、$r1が入力されます。しかし、結果に複数の列がある場合、フェッチは実行されますが、結果は表示されません。どちらのテストでも、result列とbind_result列の数は同じです。

そのような行動の理由がわかりません。手順から期待される結果を得ようとする方法に問題がありますか?

4

1 に答える 1

1

プロシージャが複数の結果セットを返している可能性があります。次のようなものを使用する必要があるかもしれませんnext_result(少なくともそれがmysqliにあるものです)。

于 2013-01-30T14:47:10.057 に答える