代码点火器总是逃避我的SELECT ... CASE查询

时间:2016-02-19 09:11:17

标签: codeigniter

我正在使用Codeigniter在我的数据库上触发查询。代码如下:

$this->db->select("category.Name,
booking.Comment,
CASE WHEN amount > 0 THEN amount END AS PosAmount,
CASE WHEN amount < 0 THEN amount END AS NegAmount");

但我总是得到一个

You have an error in your SQL syntax ... right syntax to use near
'WHEN amount > 0 THEN amount END AS PosAmount, `CASE` WHEN amount < 0 
THEN amount' at line 1

Codeigniter正在逃避CASE,但我不知道如何防止这种情况发生。

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

来自documentation

  

$this->db->select()接受可选的第二个参数。如果将其设置为FALSE,CodeIgniter将不会尝试保护您的字段或表名称。如果您需要复合选择语句,其中字段的自动转义可能会破坏它们,这非常有用。

在你的情况下:

$this->db->select("category.Name,
booking.Comment,
CASE WHEN amount > 0 THEN amount END AS PosAmount,
CASE WHEN amount < 0 THEN amount END AS NegAmount", FALSE);

此第二个参数也可用于where和join子句。