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
相关产品推荐
相关产品推荐

