我正在使用 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");
Run Code Online (Sandbox Code Playgroud)
但我总是得到一个
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
Run Code Online (Sandbox Code Playgroud)
Codeigniter 正在逃避 CASE,但我不知道如何防止这种情况发生。
有任何想法吗?
从文档:
$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);
Run Code Online (Sandbox Code Playgroud)
第二个参数也可用于 where 和 join 子句。