我正在用PHP创建一个登录系统。我需要用户使用他或她的用户名或电子邮件或电话号码登录密码。因为我在java中知道我们会像email==user^ username == user
那样适用于MySQL。我可以在MySQL中做这样的事情吗?
Select * from user WHERE mail = 'user' ^ phoneNo= 'user' ^ username = 'user' and password = 'pass'
我已经尝试过但失败了。或者,我在PHP中使用多个if
并像这样一次检查一个
if (mail == user){
}
答案 0 :(得分:2)
MySQL的xor
执行^
在Java中所做的事情,但在这种情况下两者都不正确。您希望用户的用户名,电话号码或电子邮件等于给定的字符串。 xor
表示其中只有一个可以匹配,而根据问题的文字,您似乎也希望用户拥有例如username
或者mail
等于'user'
。对于这个用例,一个简单的or
运算符应该可以解决这个问题:
SELECT *
FROM user
WHERE (mail = 'user' OR phoneNo = 'user' OR username = 'user') AND
password = 'pass'
或者,更优雅的是,您可以使用in
运算符作为or
系列的简写:
SELECT *
FROM user
WHERE 'user' IN (mail, phoneNo, username) AND
password = 'pass'
答案 1 :(得分:2)
查询将是 -
Select * from user WHERE (mail = 'user' or phoneNo= 'user' or username = 'user') and password = 'pass'
或
Select * from user WHERE 'user' in (mail, phoneNo, username) and password = 'pass'
答案 2 :(得分:1)
使用此
SELECT * FROM user WHERE (mail = 'user' OR phoneNo= 'user' OR username = 'user') AND password = 'pass';