CodeIgniter select() 方法中的自动引用正在破坏 SELECT 子句

问题描述 投票:0回答:1

我有这样的疑问:

$this->db->select('
    COUNT(tran_ID) AS count,
    CASE WHEN MONTH(days)>=4
              THEN concat(YEAR(days), "-", YEAR(days)+1)
         ELSE
              concat(YEAR(days)-1, "-", YEAR(days))
    END AS format_date,
    product_class AS saleCol
');

我在不正确的地方得到反引号和语法错误:

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在 'WHEN MONTH(days)>=4 THEN concat(YEAR(days), `"-"`, YEAR(days)+1) 附近使用的正确语法 ELSE concat(是的,位于第 1 行

SELECT COUNT(tran_ID) AS 计数,`CASE` WHEN MONTH(天)>=4 THEN concat(YEAR(天), `"-"`, YEAR(天)+1) ELSE concat(YEAR(天)-1 , `"-"`, YEAR(天)) END AS format_date, `product_class` AS saleCol FROM (`transactions`) WHERE `trans_type` = 'E' AND `product_class` != '0' GROUP BY `format_date`, `产品类别`

如何防止这些引用错误?

php mysql codeigniter activerecord escaping
1个回答
1
投票

尝试这个查询,添加

FALSE
作为 select 语句中的第二个参数

$this->db->select(
                  'COUNT(tran_ID) AS count, 
                   CASE WHEN MONTH(days)>=4 THEN concat(YEAR(days), "-", YEAR(days)+1)
                     ELSE concat(YEAR(days)-1, "-", YEAR(days)) 
                   END AS format_date,
                   product_class AS saleCol',FALSE);
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.