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

CodeIgniter项目中按课程代码和区域中心统计近3年收入的SQL查询

CodeIgniter 统计指定课程与区域中心近3年总收入的查询实现

方式一:使用CodeIgniter Query Builder(推荐)

Query Builder会自动处理SQL注入风险,语法更贴合框架规范:

// 获取用户提交的筛选参数
$courseCode = $this->input->post('course_code');
$regionalCenter = $this->input->post('regional_center');

// 构建查询
$this->db->select('SUM(`Sum of income`) AS total_income', FALSE);
$this->db->from('budget');
$this->db->where('course_code', $courseCode);
$this->db->where('regional_center', $regionalCenter);
// 筛选近3年数据,替换`record_date`为表中实际存储日期的字段名
$this->db->where('record_date >= DATE_SUB(NOW(), INTERVAL 3 YEAR)');

// 执行查询并获取结果
$query = $this->db->get();
$result = $query->row();
$totalIncome = $result->total_income ?? 0;

方式二:原生SQL查询

适合需要自定义复杂逻辑的场景,注意使用查询绑定避免注入:

$courseCode = $this->input->post('course_code');
$regionalCenter = $this->input->post('regional_center');

// 原生SQL语句
$sql = "SELECT SUM(`Sum of income`) AS total_income 
        FROM budget 
        WHERE course_code = ? 
          AND regional_center = ? 
          AND record_date >= DATE_SUB(NOW(), INTERVAL 3 YEAR)";

// 执行查询,参数绑定
$query = $this->db->query($sql, [$courseCode, $regionalCenter]);
$result = $query->row();
$totalIncome = $result->total_income ?? 0;

关键注意事项

  • 替换record_date为你表中实际存储日期/年份的字段;如果是单独的年份字段,可改为year >= YEAR(NOW()) - 3
  • 列名Sum of income包含空格,MySQL中需用反引号包裹,SQL Server则用方括号[]`
  • 始终使用参数绑定或Query Builder处理用户输入,防止SQL注入

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 19:35:23