gpt4 book ai didi

php - 确定 WHERE 语句的哪些部分失败

转载 作者:可可西里 更新时间:2023-11-01 07:47:57 28 4
gpt4 key购买 nike

假设我有一个检查用户登录的 SQL 语句:

SELECT * FROM users 
WHERE username='test@example.com', password='abc123', expire_date>=NOW();

SQL 中是否有一种方法可以明确确定哪些 WHERE 条件失败,而不必将每个条件分离到它自己的查询中并单独测试?

在这个具体示例中,它允许开发人员准确地告诉用户他们尝试登录失败的原因。

出于我的目的,我使用 PHP/MySQL。

最佳答案

好吧,您可以做的一件事是更改您的查询,使其仅匹配用户名。然后在代码中检查密码和到期日期,返回适当的错误。

此外,我希望您的示例查询是一种简化;当然,您应该对密码进行加盐/加密/散列处理,并且应该包含一些限制在特定时间范围内失败尝试次数的内容,等等...

就您的实际问题(与您正在寻找的结果相反)而言,没有办法从 where 子句中获取该信息。您可以做的最接近的事情是:

SELECT *,
CASE WHEN Password = 'asdf' THEN 1 ELSE 0 END AS IsPasswordMatch,
CASE WHEN Expiration >= NOW() THEN 1 ELSE 0 END AS IsActiveAccount
FROM Users
WHERE Username = 'user'

关于php - 确定 WHERE 语句的哪些部分失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1412195/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com