【问题标题】:How to enable backticks in mysql codeigniter active record如何在 mysql codeigniter 活动记录中启用反引号
【发布时间】:2018-04-05 02:44:32
【问题描述】:

我尝试使用 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 附近 tax_category = 'Hotel' AN' 在第 1 行

有什么解决办法吗?我尝试在查询中添加反引号,但结果仍然反引号被删除,或者我没有做好。

谢谢

【问题讨论】:

  • 下面的查询对你有用。
  • 你可以这样改试试 $this->db->set($month,"'$month+$tax'", FALSE);
  • @itsme,还是不行,查询消息返回 Dec = 'Dec+10000'

标签: php mysql database codeigniter


【解决方案1】:

希望对您有所帮助:

移除第三个参数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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 我已经尝试过这样的手动查询,但仍然不起作用,codeigniter 删除(`)。并且查询结果仍然是这样的:UPDATE tax SET Dec = Dec+10000, total_yearly = total_yearly+10000 WHERE tax_category = 'Hotel' AND year = '2017'
    • 问题解决了,谢谢你给我一个关键字得知mysql有保留字:)
    • 我喜欢根据它们所在的表为我的字段名称添加前缀(例如,mt_tax 而不是 tax),这也避免了关键字问题(谁知道下一个关键字会是什么?-)
    【解决方案3】:

    尝试替换:

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

    与:

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

    强制添加反引号

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-28
      • 2012-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-22
      • 2011-10-22
      相关资源
      最近更新 更多