php where 不包含,php – 确定WHERE语句的哪个部分失败

假设我有一个这样的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,mysql,sql,where,condition

来源: https://codeday.me/bug/20190717/1485219.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值