Нужна помощь с запросом ИЛИ - PullRequest
0 голосов
/ 25 июня 2011

Мне нужно перехватить password указанного электронного письма, когда значение активации равно 1 или 2

запроса, который я использую:

  $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, только если значение activation равно 1 или 2.

Ответы [ 5 ]

2 голосов
/ 25 июня 2011

Вы хотите запрос типа

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=?)');    
0 голосов
/ 28 июня 2011

Запрос

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 для одного и того же поля.

0 голосов
/ 25 июня 2011

Добавить скобки?

$stmt = $db->prepare('select password from users where email=? and (activation=? or activation=?)');
0 голосов
/ 25 июня 2011
$stmt = $db->prepare('select password from users where email=? AND (activation=? OR activation=?)');

Используйте ключевое слово AND и укажите два возможных значения активации в инкапсулированном операторе OR.

0 голосов
/ 25 июня 2011

заключает в скобки условие или , поэтому, если оно истинно, оно все равно работает с первой проверкой по электронной почте

(activation=1 or activation=2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...