PHP 8.2中能否用一次mysqli::execute_query同时获取订单数据与行数?
一次调用mysqli::execute_query获取订单总数及订单数组
当然可以通过一次调用实现需求,你不需要重复执行两次相同的SQL查询。mysqli::execute_query返回的是mysqli_result对象,这个对象同时支持行数统计和数据读取操作,只需把结果集对象保存到变量中,再从中分别提取所需数据即可。
修改后的代码如下:
$MySQLi = new mysqli("host", "username", "password", "database"); $sql = "select * from orders WHERE userid = ? "; // 仅执行一次查询,将结果集存入变量 $result = $MySQLi->execute_query($sql, [$userid]); // 从同一结果集中获取订单总数 $ordercount = $result->num_rows; // 从同一结果集中获取订单数据数组 $orderdata = $result->fetch_all(MYSQLI_ASSOC); // 可选:释放结果集资源(PHP会自动回收,但显式释放更严谨) $result->free();
这样做的优势:
- 减少一次数据库请求,提升整体性能
- 避免两次查询之间数据库数据发生变化,导致订单总数和数据数组不一致的问题
内容的提问来源于stack exchange,提问作者Simon T
相关产品推荐
相关产品推荐

