0

テーブルを作成するために、カテゴリとカテゴリごとのアイテムをロードする次のコードがあります。

$db = new mysqli('localhost', 'root', '123456', 'hdc1');

$categorias = $db->query("getCategory(1) を呼び出す;");

if ($categorias) { while ($categoria = $categorias->fetch_object()) {

    $idcategoria = $categoria->id;

    // 2nd Query        
    if ($items = $db->query("call getItems($idcategoria);")) {
        // Cycle through results
        echo "<br />query2";

        while ($item = $items->fetch_object()) {
            echo $item->descripcion;
        }

        // Free result set
        $items->close();
        $db->next_result();
    }

}
// Free result set
$categorias->close();
//$db->next_result(); } else echo($db->error);

// 接続を閉じる $db->close();

最初のクエリは正常に実行され、カテゴリが読み込まれますが、各カテゴリごとに 2 番目のクエリを実行する場合、結果セットは常に null になります。

どうして??ストアドプロシージャエラーではなく、エラーページはありません...アイテムの結果セットがnullである理由...

4

1 に答える 1

0

ストアド プロシージャから返された結果セットは、mysqli_query() を使用して正しく取得できません。mysqli_query() 関数は、ステートメントの実行と、最初の結果セットをバッファリングされた結果セット (存在する場合) にフェッチすることを組み合わせます。ただし、追加のストアド プロシージャの結果セットがユーザーから隠されているため、mysqli_query() はユーザーが期待する結果セットを返すことができません。

ストアド プロシージャから返された結果セットは、mysqli_real_query() または mysqli_multi_query() を使用してフェッチされます。どちらの関数も、CALL などのステートメントによって返された結果セットをいくつでもフェッチできます。

于 2016-07-27T16:23:41.727 に答える