当激活值为1或2时,我需要捕获特定电子邮件的password
查询我正在使用:
$stmt = $db->prepare('select password from users where email=? && activation=? or activation=?');
$stmt->bind_param('sii', $user, $activ, $activReset );
$stmt->execute();
此代码会捕获所有包含activation = 2
的电子邮件,但如果mail@gmail.com
的值为1或2,我的想法只会捕获activation
。
答案 0 :(得分:2)
您需要像
这样的查询SELECT password
FROM users
WHERE email = 'mail@gmail.com'
AND ( activation = 1 OR activation = 2)
所以,你应该使用像
这样的东西$stmt = $db->prepare('select password from users where email=? AND (activation=? OR activation=?)');
答案 1 :(得分:0)
包含或条件,如果其中任一条件为真,则仍可使用针对电子邮件的第一次检查
(activation=1 or activation=2)
答案 2 :(得分:0)
$stmt = $db->prepare('select password from users where email=? AND (activation=? OR activation=?)');
使用AND关键字,并将两个可能的激活值放在封装的OR语句中。
答案 3 :(得分:0)
添加括号?
$stmt = $db->prepare('select password from users where email=? and (activation=? or activation=?)');
答案 4 :(得分:0)
查询
SELECT password
FROM users
WHERE email = 'mail@gmail.com'
AND ( activation = 1 OR activation = 2)
相当于:
SELECT password
FROM users
WHERE email = 'mail@gmail.com'
AND activation IN (1, 2)
所以,你也可以:
$stmt = $db->
prepare('SELECT password FROM users WHERE email=? AND activation IN (?,?)');
性能没有差别,只是缩短了一点。如果您对同一个字段没有两个或多个OR条件,则可能会有所帮助。