You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将URL参数传递给PHP API函数 解决订单筛选返回空问题

问题修复方案

核心错误原因

  • mysqli_stmt::execute() 方法要求传入的绑定参数必须是数组类型,你直接传入了整型的$last_oid标量值,导致参数绑定失败,查询条件不生效,最终返回空结果。
  • 若你使用的PHP版本低于8.1,mysqli的execute()方法本身不支持直接传参绑定,必须先调用bind_param方法完成参数绑定后再执行查询。

修复方案

方案1:适配PHP 8.1及以上版本

仅需修改getOrders函数中的execute调用行,将参数包裹为数组即可:

function getOrders($last_oid){
 $stmt = $this->con->prepare("SELECT oid, uid, order_num, create_date, status_date FROM orders WHERE oid > ?");
 // 原错误写法:$stmt->execute($last_oid);
 $stmt->execute([$last_oid]); // 修改为传入数组
 $stmt->bind_result($oid, $uid, $order_num, $create_date, $status_date);
 
 $orders = array(); 
 
 while($stmt->fetch()){
 $order  = array();
 $order['oid'] = $oid; 
 $order['uid'] = $uid; 
 $order['order_num'] = $order_num; 
 $order['create_date'] = $create_date; 
 $order['status_date'] = $status_date; 
 
 array_push($orders, $order); 
 }
 
 return $orders; 
}

方案2:兼容所有PHP版本的稳妥写法

手动调用bind_param方法绑定参数类型,适配低版本PHP环境:

function getOrders($last_oid){
 $stmt = $this->con->prepare("SELECT oid, uid, order_num, create_date, status_date FROM orders WHERE oid > ?");
 // 绑定参数,i表示参数为整型
 $stmt->bind_param('i', $last_oid);
 $stmt->execute();
 $stmt->bind_result($oid, $uid, $order_num, $create_date, $status_date);
 
 $orders = array(); 
 
 while($stmt->fetch()){
 $order  = array();
 $order['oid'] = $oid; 
 $order['uid'] = $uid; 
 $order['order_num'] = $order_num; 
 $order['create_date'] = $create_date; 
 $order['status_date'] = $status_date; 
 
 array_push($orders, $order); 
 }
 
 return $orders; 
}

调试建议

如果修改后仍有问题,可以在execute()执行后添加var_dump($stmt->error);输出SQL错误信息,快速定位其他潜在问题。

内容的提问来源于stack exchange,提问作者winfred adrah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 21:18:02