我正在尝试从登录代码数据库中选择最近创建的代码,该代码是在过去 60 秒内创建的。我尝试仅使用 MariaDB 查询来执行此操作,但当我尝试运行它时收到此错误代码:
未捕获的 mysqli_sql_exception:您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,了解在 ') 附近使用的正确语法 ORDER BY 创建时间 第 4 行 DESC LIMIT 1'
查询:
$stmt = $conn->prepare(
"SELECT *
FROM login_codes
WHERE u_id = ?
AND created_at >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 60 SECOND)
ORDER BY created_at DESC
LIMIT 1");
我也尝试过其他功能,例如SUBTIME,但似乎没有任何作用。如果我删除整个“AND created_at”行,查询确实有效,但显然我失去了查询的目的。
没有这样的tomestamp功能
你可以这样做
SELECT *
FROM login_codes
WHERE u_id = ?
AND created_at >= TIMESTAMPADD(SECOND, -60, CURRENT_TIMESTAMP())
ORDER BY created_at DESC
LIMIT 1;
或者
SELECT *
FROM login_codes
WHERE u_id = ?
AND created_at >= CURRENT_TIMESTAMP() - INTERVAL 60 SECOND
ORDER BY created_at DESC
LIMIT 1;