【问题标题】:Codeigniter select_sum generate wrong queryCodeigniter select_sum 生成错误的查询
【发布时间】:2019-05-27 03:31:53
【问题描述】:

我参与了一个Codeigniter 2 项目,我有一个active record 喜欢:

$query = $this->db->select_sum('Cardit * GPA', 'sum')
                  ->get('marks_info');

它生成如下查询:

SELECT SUM(`Cardit` * `GPA`) AS `sum` FROM `marks_info`

最近我将我的项目迁移到 Codeigniter 3,但相同的活动记录生成了一些不同的查询,例如:

SELECT SUM(`Cardit *` `GPA`) AS `sum` FROM `marks_info`

这是错误的,它在 SUM 部分包含 * 和 Cardit ('Cardit *')。

区别:

谁能告诉我,如何在 CodeIgniter 3 中解决这个问题?

【问题讨论】:

    标签: php sql codeigniter


    【解决方案1】:

    试试这个,它会给你预期的输出

    $query = $this->db->select('sum(Cardit * GPA) sum')->get('marks_info');
    

    【讨论】:

    • 这样我就可以了。但我的问题是使用最新的 CI 生成代码。
    【解决方案2】:

    为了避免查询中的反引号。您可以将 false 分配给protect_identifiers,例如:

    $this->db->_protect_identifiers=false;
    

    并相应地运行您的查询。

    【讨论】:

    • 没有。这是行不通的。此外,这将是 protect_identifiers,因为最新的 CI 版本删除了 _
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-30
    • 2016-07-25
    • 2018-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多