【问题标题】:mysql | Codeigniter Active Records are adding extra back ticks to querymysql | Codeigniter Active Records 正在为查询添加额外的反引号
【发布时间】:2014-12-15 09:24:57
【问题描述】:

当我尝试通过 codeigniter 活动记录运行查询时,我收到错误,因为它正在添加额外的 ``

这是 codeigniter 试图执行的查询

SELECT `T`.`id` AS TimeSheetID, DATE_FORMAT(T.date_created, `'%M')` AS MonthName FROM (`timesheet` T)

但这是我真正想要执行的查询。

SELECT `T`.`id` AS TimeSheetID, DATE_FORMAT(T.date_created, '%M') AS MonthName FROM (`timesheet` T)

如何避免活动记录添加的额外冒号..

如何编写此语句以使查询正常工作。

$this->db->select("
                T.id AS TimeSheetID,
                DATE_FORMAT(T.date_created,'%M') AS MonthName");

【问题讨论】:

    标签: php mysql sql database codeigniter


    【解决方案1】:

    SELECT() 中添加第二个参数FALSE

    所以,

    $this->db->select("
                    T.id AS TimeSheetID,
                    DATE_FORMAT(T.date_created,'%M') AS MonthName", FALSE);
    

    $this->db->select() 接受可选的第二个参数。如果您将其设置为 FALSE,CodeIgniter 将不会尝试使用反引号保护您的字段或表名。

    Reference

    【讨论】:

    • 谢谢先生,但它对 group_by 不起作用,我的意思是如果我在 group by 中使用它,我也会在那里出错。并且 false 没有用作第二个参数?
    • 请阅读文档,每个函数的参数编号不同。
    • 是的。刚刚发现..我也可以在 group_by 中使用同义词名称。我的意思是我在 select 中使用了 AS,所以在组中我使用了该 select 的昵称并且它起作用了。再次感谢。
    猜你喜欢
    • 2013-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-23
    • 1970-01-01
    • 2021-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多