如何从php存储过程调用加载嵌套数据

时间:2013-06-05 19:16:53

标签: php mysql stored-procedures

使用下一个代码加载每个类别的类别和项目以构建表格:

  

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

     

$ categorias = $ db-> query(“call 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-&GT;关闭();

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

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

1 个答案:

答案 0 :(得分:0)

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

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