如何在MariaDB中按时间戳查询且不触发mysqli_sql_exception
解决MariaDB查询最近60秒验证码的语法错误问题
- 问题根源是
TIMESTAMP_SUB函数在MariaDB中的兼容性问题,换成以下两种写法即可解决:
写法一:使用DATE_SUB函数
$stmt = $conn->prepare( "SELECT * FROM login_codes WHERE u_id = ? AND created_at >= DATE_SUB(CURRENT_TIMESTAMP(), INTERVAL 60 SECOND) ORDER BY created_at DESC LIMIT 1");
写法二:直接使用时间减法表达式(更简洁)
$stmt = $conn->prepare( "SELECT * FROM login_codes WHERE u_id = ? AND created_at >= CURRENT_TIMESTAMP() - INTERVAL 60 SECOND ORDER BY created_at DESC LIMIT 1");
- 额外注意:确认
created_at字段的数据类型为DATETIME或TIMESTAMP,否则时间比较会出现异常。
内容的提问来源于stack exchange,提问作者Kieran W
相关产品推荐
相关产品推荐

