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

从MySQL查询result_array结果批量更新时出现未初始化偏移量2报错如何解决

错误原因

  • 直接原因是$value['bprice'][$key]写法错误:result_array()返回的查询结果中,$value为单条行数据的一维数组,$value['bprice']是该行bprice字段的独立数值/字符串,不是数组。额外加[$key]相当于把字符串当作数组按下标取字符,当循环的$key数值超过字符串长度时,就会抛出偏移量未初始化的错误。
  • 附加错误:循环内直接覆盖$data变量而非追加数据,且CodeIgniter的update_batch要求传入的更新数据集为二维数组,每一项必须包含表主键字段用来匹配更新行,否则无法定位要修改的记录。

修复代码

// 查询时必须取出主键字段,示例假设主键为id
$this->db->select('id, bprice');
$this->db->from('items');
$this->db->limit(20);
$query = $this->db->get()->result_array();

$data = [];

foreach ($query as $value) {
    // 直接取bprice值计算,无需加额外下标
    $calcPrice = (float)$value['bprice'] * 1.3;
    // 追加单条更新数据,必须包含主键
    $data[] = [
        'id' => $value['id'],
        'branch_price' => $calcPrice
    ];
}

// update_batch第三个参数指定用来匹配的主键字段
return $this->db->update_batch('items', $data, 'id');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:12:02