You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写用于MySQL查询的CodeIgniter代码及自定义代码正确性验证

关于CodeIgniter模型函数对应MySQL查询的正确性验证

先来看你给出的信息:

  • 目标MySQL查询:
SELECT SUM(profit) FROM budget_tbl WHERE reg_date LIKE '2021-%';
  • 你编写的CodeIgniter模型函数:
select_profit() { 
    $this->db->select_sum("budget_tbl.profit"); 
    $this->db->from("budget_tbl"); 
    $this->db->like('reg_date','2021-','after'); 
    $qry=$this->db->get(); 
    return $qry -> result(); 
}

接下来咱们一步步分析问题和修正方向:

  1. 函数定义语法错误
    PHP函数必须用function关键字声明,而且CodeIgniter模型中的方法通常需要设置为public(方便控制器调用),所以开头应该改成:

    public function select_profit() {
    
  2. like方法的参数错误
    你的目标查询是匹配reg_date以2021-开头的记录(即reg_date LIKE '2021-%'),但CodeIgniter的like方法第三个参数规则是:

    • 'after'会生成reg_date LIKE '%2021-'(匹配以2021-结尾的记录)
    • 'before'才会生成reg_date LIKE '2021-%'(匹配以2021-开头的记录)
      所以这里应该把第三个参数改成'before':
    $this->db->like('reg_date', '2021-', 'before');
    
  3. 返回结果的优化
    因为SUM(profit)返回的是单个聚合值,用result()会返回一个包含单个对象的数组,不够直观。更合适的方式是直接取出聚合数值:

    // select_sum默认会给字段命名为profit_sum
    return $qry->row()->profit_sum;
    

    如果你想自定义返回字段的名称,可以在select_sum里指定别名:

    $this->db->select_sum("budget_tbl.profit", "total_profit");
    // 之后可以通过$qry->row()->total_profit获取值
    

最后修正后的完整函数示例:

public function select_profit() { 
    $this->db->select_sum("budget_tbl.profit", "total_profit"); 
    $this->db->from("budget_tbl"); 
    $this->db->like('reg_date', '2021-', 'before'); 
    $qry = $this->db->get(); 
    return $qry->row()->total_profit;
}

内容的提问来源于stack exchange,提问作者Mathee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 09:27:31