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

如何在CodeIgniter中实现带WHERE IN的MySQL UPDATE语句?

在CodeIgniter中批量更新指定ID数据的正确实现

嘿,我立马就发现你代码里的问题啦!你把ID列表写成了逗号分隔的字符串,但CodeIgniter的where_in()方法要求传入的是数组类型的参数,这就是你的更新操作没生效的原因~

正确写法(直接使用数组)

直接把ID列表定义成数组就行,这样where_in()能正确识别每个ID:

// 定义数组格式的ID列表
$id_list = [1, 2, 3, 4, 5];
$this->db->where_in('id', $id_list);
$this->db->update('my_table', $mydata);

如果只能拿到逗号分隔的字符串怎么办?

要是因为业务场景限制,你只能获取到类似'1,2,3,4,5'这样的字符串,也可以先把它转成数组,同时建议做类型过滤避免SQL注入风险:

$id_str = '1,2,3,4,5';
// 把字符串拆分成数组
$id_list = explode(',', $id_str);
// 将每个元素转为整数,防止恶意注入
$id_list = array_map('intval', $id_list);

$this->db->where_in('id', $id_list);
$this->db->update('my_table', $mydata);

为什么原来的代码不生效?

当你传入字符串'1,2,3,4,5'时,CodeIgniter生成的SQL会是这样的:

UPDATE my_table SET ... WHERE id IN ('1,2,3,4,5')

这相当于只在找ID等于整个字符串'1,2,3,4,5'的记录,显然数据库里不存在这样的ID,所以更新操作没有任何数据被修改。

内容的提问来源于stack exchange,提问作者Md. Shamvil Hossain

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:08:26