Php 如何在mysql codeigniter活动记录中启用反勾号

Php 如何在mysql codeigniter活动记录中启用反勾号,php,mysql,database,codeigniter,Php,Mysql,Database,Codeigniter,我尝试codeigniter活动记录,当我尝试更新名为Dec的字段时,它会给我错误(以前一月到十一月是好的) 这是我的密码 $this->db->set($month,"$month+$tax", FALSE); $this->db->set('total_yearly',"total_yearly+$tax", FALSE); $this->db->where(array('tax_category' =>

我尝试codeigniter活动记录,当我尝试更新名为Dec的字段时,它会给我错误(以前一月到十一月是好的)

这是我的密码

        $this->db->set($month,"$month+$tax", FALSE);
        $this->db->set('total_yearly',"total_yearly+$tax", FALSE);
        $this->db->where(array('tax_category' => $tax_category));
        $this->db->update($nama_table); 
查询返回的结果如下

UPDATE `tax` SET Dec = Dec+10000, total_yearly = total_yearly+10000 WHERE `tax_category` = 'Hotel' AND `year` = '2017'
错误消息

您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 接近'Dec=Dec+2479,每年总计=每年总计+2479,其中
tax\u类别
='Hotel'AN'在第1行

有解决办法吗?我曾尝试在查询中添加反勾号,但结果仍然是反勾号被删除,或者可能我做得不好


谢谢

我认为问题在于“DEC”是一个词。在SET子句中的字段名周围加上一些反勾号,以便查询显示:

UPDATE `tax` SET `Dec` = `Dec`+10000, `total_yearly` = `total_yearly`+10000 WHERE `tax_category` = 'Hotel' AND `year` = '2017'
尝试替换:

$this->db->set($month,"$month+$tax", FALSE);
与:

$this->db->set("`$month`","`$month`+$tax", FALSE);

要强制添加反勾号,请执行以下操作:

删除第三个参数
FALSE
以允许使用倒勾

set()
还将接受可选的第三个参数
($escape)
,如果设置为
FALSE
,该参数将防止数据被转义

$this->db->set($month,$month.'+'.$tax);
$this->db->set('total_yearly',"total_yearly+".$tax);
$this->db->where(array('tax_category' => $tax_category));
$this->db->update($nama_table); 
阅读更多:

在下面,查询正在为您工作。您可以这样更改,然后尝试$this->db->set($month,“$month+$tax”,FALSE)@itsme,仍然不起作用,查询消息return Dec='Dec+10000'我尝试过这样的手动查询,但仍然不起作用,codeigniter删除(`)。查询结果仍然是这样的:更新
tax
设置Dec=Dec+10000,total\u year=total\u year+10000,其中
tax\u类别
='Hotel'和
year
='2017'问题解决,感谢你给我一个关键字,让我知道mysql有保留字:)我很喜欢根据字段名所在的表(例如,mt_tax而不是tax)为字段名添加前缀,这也避免了关键字问题(谁知道下一个关键字是什么?-)