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

如何根据前端传入的月份值查询数据库对应月份的数据

解决方案

要实现按选中月份筛选员工生日数据的需求,需根据birth_date字段的存储类型调整SQL语句,同时必须通过参数绑定避免SQL注入风险,以下是具体实现方案:

情况1:birth_date为数据库标准日期类型(如DATE/DATETIME)

若字段是标准日期格式,可直接用MONTH()函数提取月份进行匹配:

// 假设前端传入的月份值存储在$selectedMonth变量中(例如选中February时值为2)
$selectedMonth = $_POST['birth_month']; // 实际项目中请根据框架规范获取参数

// 使用参数化查询执行SQL
$query = $this->db->rawQuery(
    "SELECT * FROM tbl_emp_information WHERE MONTH(birth_date) = ?",
    [$selectedMonth]
);

echo json_encode($query);

情况2:birth_date为字符串类型(格式如2020/02/09)

若字段以字符串形式存储,需截取字符串中的月份部分进行匹配,注意要将单数字月份补为两位数(如1转为'01'):

$selectedMonth = $_POST['birth_month'];
// 格式化月份为两位数,匹配字符串中的月份格式
$formattedMonth = str_pad($selectedMonth, 2, '0', STR_PAD_LEFT);

$query = $this->db->rawQuery(
    "SELECT * FROM tbl_emp_information WHERE SUBSTRING(birth_date, 6, 2) = ?",
    [$formattedMonth]
);

echo json_encode($query);

核心注意事项

  • 禁止直接将前端传入的变量拼接进SQL语句,必须使用参数绑定方式,防止SQL注入攻击。
  • 字符串类型的birth_date需保证月份格式统一为两位数,否则会出现匹配失败的情况。

内容的提问来源于stack exchange,提问作者Michael Angelo Corral

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 03:54:30