我正在使用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,但我不知道如何防止这种情况发生。
有什么想法吗?
答案 0 :(得分:4)
$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子句。