如何编写用于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(); }
接下来咱们一步步分析问题和修正方向:
函数定义语法错误
PHP函数必须用function关键字声明,而且CodeIgniter模型中的方法通常需要设置为public(方便控制器调用),所以开头应该改成:public function select_profit() {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');返回结果的优化
因为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
相关产品推荐
相关产品推荐

