0

有下一个代码来加载类别和每个类别的项目来构建一个表:

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

$categorias = $db->query("调用 getCategoria(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();

第一个查询成功执行并加载类别,但是当我想为每个类别执行第二个查询时,结果集总是为空。

为什么??没有错误页面,没有存储过程错误...为什么项目的结果集为空...

4

1 回答 1

0

使用 mysqli_query() 无法正确获取从存储过程返回的结果集。mysqli_query() 函数将语句执行和将第一个结果集提取到缓冲结果集中(如果有)结合起来。但是,还有其他对用户隐藏的存储过程结果集,这会导致 mysqli_query() 无法返回用户预期的结果集。

使用 mysqli_real_query() 或 mysqli_multi_query() 获取从存储过程返回的结果集。这两个函数都允许获取语句返回的任意数量的结果集,例如 CALL

于 2016-07-27T16:23:41.727 回答