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

MySQL含点字段无法插入数据,CodeIgniter报列不存在错误求助

解决CodeIgniter插入带点号字段的问题

问题原因

你的字段名paymentInfo.Prepaid.razorpayOrderId包含多个英文点号,CodeIgniter的查询构造器会默认把点号当成「表名.字段名」的分隔符,错误地认为你要操作paymentInfo表的Prepaid.razorpayOrderId字段,而非OrderList表的这个完整字段,因此触发报错。

解决方案

推荐以下几种可靠的处理方式:

方法1:使用set方法手动指定字段

通过set方法单独处理带点号的字段,用反引号包裹字段名,并关闭自动转义(第三个参数设为FALSE):

$this->db->set('`paymentInfo.Prepaid.razorpayOrderId`', 'test', FALSE);
$this->db->insert('OrderList');

方法2:手动构造INSERT语句

直接编写SQL语句,用反引号包裹字段名,避免查询构造器的自动解析,同时用占位符保证值的安全性:

$sql = "INSERT INTO OrderList (`paymentInfo.Prepaid.razorpayOrderId`) VALUES (?)";
$this->db->query($sql, ['test']);

方法3:修改$data数组的键(部分版本兼容)

把字段名用反引号包裹后作为数组键,部分CodeIgniter版本可正确识别:

$data["`paymentInfo.Prepaid.razorpayOrderId`"] = "test";
$this->db->insert('OrderList', $data);

优先推荐方法1和方法2,兼容性与安全性更有保障。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 12:52:10