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

使用日期作为条件时MySQL查询无结果问题求助

解决MySQL日期条件查询无结果的问题

核心问题:日期值未加引号导致的语法错误

你的硬编码查询语句里,date = 2022-10-25 没有给日期加单引号,MySQL会把2022-10-25解析成数学运算(2022-10=2012,2012-25=1987),相当于你在查询date = 1987,而你的date字段是date类型,自然匹配不到任何结果。

修正后的硬编码查询语句

SELECT * FROM attendance 
WHERE grade = '4' 
AND date = '2022-10-25';

PHP代码中的问题及修正

你的PHP拼接的SQL语句存在两个明显问题:

  1. 日期变量$date未加单引号,同样会触发上述的运算解析错误
  2. 直接拼接$_POST参数存在严重SQL注入风险,同时字符串拼接的引号嵌套逻辑混乱

推荐使用预处理语句(安全且避免语法错误)

// 假设已建立PDO数据库连接
$pdo = new PDO('mysql:host=localhost;dbname=你的数据库名', '用户名', '密码');
$grade = $_POST['grade'][1];
$date = '2022-10-25'; // 替换为你实际获取的日期值

$stmt = $pdo->prepare("SELECT * FROM attendance WHERE grade = ? AND date = ?");
$stmt->execute([$grade, $date]);
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);

如果一定要用字符串拼接(不推荐,风险高),至少要给日期加单引号,同时对用户输入做转义处理:

$grade = mysqli_real_escape_string($conn, $_POST['grade'][1]);
$date = mysqli_real_escape_string($conn, $date);
$sql = "SELECT * FROM attendance WHERE grade = '$grade' AND date = '$date'";

验证小技巧

先在MySQL客户端(比如MySQL Workbench、Navicat)执行加了引号的日期查询,确认能返回结果后,再同步到PHP代码中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 08:30:52