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

时间:2018-04-05 02:44:32

标签: php mysql database codeigniter

我尝试使用codeigniter活动记录,当我尝试更新名为Dec的字段(1月 - 11月之前很好)时,它会给我错误...

这是我的代码

        $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附近,total_yearly = total_yearly + 2479 WHERE   tax_category ='酒店'AN'在第1行

任何解决方案?我试图在查询中添加反引号,但结果仍然是反引号被删除,或者我可能没有做得好。

由于

3 个答案:

答案 0 :(得分:2)

希望这会对你有所帮助:

删除第三个参数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); 

了解更多: https://www.codeigniter.com/user_guide/database/query_builder.html#updating-data

答案 1 :(得分:1)

我认为问题在于" DEC"是reserved word。在SET子句中的字段名称周围抛出一些反引号,以便查询:

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

答案 2 :(得分:1)

尝试更换:

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

with:

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

强制添加反引号