2015-08-09 2 views
0

Я пытаюсь сравнить адрес электронной почты, адрес, который вы выбрали.Сравните 3 столбца и введите ошибку, если они соответствуют

Что я хочу, если адрес электронной почты + адрес = выбрана выбранная бросить ошибку.

Другими словами, если выбранная книга является той же книгой, выбранной ранее, то выдайте ошибку. Этот человек не может выбрать одну и ту же книгу дважды. Этот человек может выбрать несколько книг, а не одну и ту же книгу.

$sql = "SELECT * FROM thetable WHERE `emailaddress` = '{$emailaddress}' 
OR `mailaddress` = '{$mailaddress}' OR `bookselected` = '{$bookselected}' "; 

Я попытался OR, но если используется тот же адрес электронной почты или адрес он выдает ошибку проверки независимо от того, если это другая книга выбрана. В подтверждении указано, что вы ранее ввели.

Я пробовал И, но при использовании этого он по какой-то причине обходит проверку.

Может кто-нибудь помочь в этом заявлении sql?

+0

Некоторые реальные пример данных с ожидаемым результатом будет полезен. – Bulat

+0

Вы должны использовать 'AND'. Что вы подразумеваете под «обход проверки»? Вы также можете создать уникальный многоколоночный индекс для трех столбцов. Таким образом, база данных будет выдавать ошибку, если вы попытаетесь вставить дубликат. – Anders

ответ

0

Не уверен, что я правильно понимаю ваш вопрос, но если вы проверяете, если книга была выбрана лицом с той же EMAILADDRESS и MailAddress, ваш запрос должен быть:

$sql = "SELECT * FROM thetable WHERE `emailaddress` = '{$emailaddress}' 
AND `mailaddress` = '{$mailaddress}' AND `bookselected` = '{$bookselected}' "; 

Обратите внимание на AND вместо OR.

Одна вещь, вы, возможно, не упоминается, если вы должны быть в состоянии проверить только на одно поле между почты и электронной, в этом случае запрос должен быть:

$sql = "SELECT * FROM thetable WHERE 
(`emailaddress` = '{$emailaddress}' AND `bookselected` = '{$bookselected}') 
OR 
(`mailaddress` = '{$mailaddress}' AND `bookselected` = '{$bookselected}') "; 
+0

Спасибо за второй вариант. Но проблема все время была фигурной скобкой. Как указано, я использовал AND, но он не работал из-за скобки. Поскольку Франческо ответил на этот вопрос и дал мне второй вариант, спасибо за помощь. – jygrn

+0

У меня есть вопрос к Франческо. Поскольку это проблема для всех, кто ищет помощь, я заметил, вы сделали комментарий «Не уверен, что правильно понял ваш вопрос». Можете ли вы объяснить, что вы не могли понять? Спасибо – jygrn

+0

Вы говорите: «Я пытаюсь сравнить адрес электронной почты, адрес, который вы выбрали». Очевидно, что ** адрес электронной почты ** и ** адрес ** нельзя сравнить с ** книгой **, поэтому вы имели в виду нечто иное. Прочитав весь ответ, я смог правильно разобраться, но мне пришлось немного догадаться. –

Смежные вопросы