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

为什么直接将mysqli_stmt::get_result()作为函数参数传递会报错?

报错根本原因
  • 核心问题是你在代码中重复调用了mysqli_stmt::get_result()方法,该方法对于同一个已执行的预处理语句仅能调用一次,第二次及后续调用都会返回false而非mysqli_result对象。
  • 对应你给出的代码执行顺序逻辑:
    1. 预处理语句执行后,你先调用了一次$stmt_SelCusts->get_result(),把返回的结果集对象存入了$rslt_SelCusts变量,这一步已经把MySQL返回的结果集从缓冲区全部取出,预处理语句对应的结果缓冲区会被清空。
    2. 后续你又直接把$stmt_SelCusts->get_result()作为参数传入函数,这是第二次调用该方法,此时已经没有可用的结果集可以读取,方法返回false。
  • 函数接收到的$rslt参数是布尔值false,不属于对象,访问$rslt->num_rows自然就触发了「尝试获取非对象的属性」的Notice报错。
验证方法

你可以在两次get_result()调用后分别打印返回值确认该特性:

$stmt_SelCusts->execute();
// 第一次调用,输出object(mysqli_result)#x (x) { ... }
var_dump($stmt_SelCusts->get_result());
// 第二次调用,输出bool(false)
var_dump($stmt_SelCusts->get_result());
补充说明

如果你删除第一次将结果集存入变量的代码,直接把get_result()的返回值传入函数,是不会出现报错的,本质和存入变量再传入一致,都是仅调用一次get_result()获取结果集。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:51:02