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

标签 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);

// Close connection $db->close();

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

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

最佳答案

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

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

关于php - 如何从php存储过程调用以加载嵌套数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16948027/

相关文章:

mysql - SQL 函数从 5.5 开始非常慢

mysql - 通过socket连接本地MySQL服务器

sql - 禁止将文本值插入整数列

mysql - 如何使用 Doctrine2 和 MySQL 执行存储过程

mysql - 如何在 MySQL 的单个存储过程中使用多个游标

mysql - 将计数存储在变量中,插入到行中,并在 MySQL 中使用 IF 语句

php - Laravel - 选择列值第一次出现的行

php - mysql查询选择不同记录的百分比

php - 如何允许用户将 Facebook 中的现有图片添加到我的网站?

php - 如何使用 PHP 强制文件下载