使用下一个代码来加载类别和每个类别的项目以构建表格:
$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/