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

PHP while循环仅执行1次且mysqli_fetch_array参数异常问题求解

问题原因

你出现这个错误的核心原因是变量名冲突覆盖:

  • 初始执行MySQL查询时,你把查询结果集存到了变量$result中,这是一个mysqli_result类型的对象,用来给mysqli_fetch_array遍历用
  • 但在while循环内部,执行第二个curl请求提交帖子数据的时候,你把curl的返回结果又赋值给了$result:$result = curl_exec($ch);,这时候原来的MySQL结果集就被覆盖成了字符串类型的curl返回值
  • 第一次循环执行完后,进入第二次循环调用mysqli_fetch_array($result)的时候,$result已经是字符串了,不符合参数要求,直接报错终止循环

修复方案

只需要把循环内curl请求的返回值变量名改成其他不冲突的名字即可,比如改成$curl_result,修改对应两处代码:

  1. 把循环内的$result = curl_exec($ch);改成$curl_result = curl_exec($ch);
  2. 后面解析返回值的代码$json = json_decode($result, true);同步改成$json = json_decode($curl_result, true);

另外还有一个隐藏的小问题:你用来统计循环次数的变量$i,在遍历hashtag的foreach循环里也被用作了键名变量foreach($variableAry as $i=>$var),同样会覆盖外层的计数$i,建议把foreach里的键名也改成其他名字比如$tag_key,避免计数错误。

修复后核心代码片段示例

// 前面的MySQL查询、curl配置代码保持不变
$curl_result = curl_exec($ch); // 修改变量名,避免覆盖MySQL结果集
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close($ch);

$json = json_decode($curl_result, true); // 同步修改解析的变量名
// 后续业务逻辑代码保持不变

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:39:01