MySQL множественные и условия - PullRequest
1 голос
/ 14 марта 2012

Мне нужно знать, как query a mysql database на основе нескольких условий и ... я пытаюсь найти всех пользователей мужского пола онлайн старше 18 лет.

php код:

$sql = mysql_query("Select * FROM `users` where `round`= '".$userData["round"]."',
    `sex` = 'm', `age` = '18', `online_stas` = 'online'
    ")or die(mysql_error());

Ответы [ 4 ]

2 голосов
/ 14 марта 2012

Читая ответы и тот факт, что у вас все еще есть ошибки, я думаю, что в поле sex можно указать «M» вместо «m».

Вы можете попробовать:

$sql = mysql_query("SELECT * FROM `users`
                   WHERE UPPER(`sex`) = 'M'
                   AND `age` > 18
                   AND `online_stas` = 'online'")
       or die(mysql_error());

Я удалил проверку, основанную на вашем заявлении, что вы хотите, чтобы все пользователи-мужчины онлайн были старше 18 лет, но могут быть добавлены снова.Другой возможной ошибкой может быть сравнение age со строковым значением 18 вместо числового значения 18, поэтому я также изменил это (несмотря на то, что это может работать и преобразовываться автоматически, но лучше проверить с теми же типами, если что-то изменится в будущем).

Попробуйте и скажите, сработало ли это.

1 голос
/ 14 марта 2012

Попробуйте использовать AND.

$sql = mysql_query("Select * FROM `users` where `round`= '".$userData["round"]."' AND
    `sex` = 'm' AND `age` >= '18' AND `online_stas` = 'online'
    ")or die(mysql_error());

Кроме того, я изменил ваш age чек на использование >= вместо =, поскольку в вашем описании указано, что вы хотите, чтобы все пользователи старше 18 летне равно.Я также предполагаю, что вы хотите включить тех, кому 18, а также тех, кто выше, если нет, измените его на >.

0 голосов
/ 14 марта 2012

Вам необходимо использовать AND при указании нескольких условий.

$sql = mysql_query("SELECT * FROM `users` WHERE `round`= '". mysql_escape_string($userData["round"])."' AND `sex` = 'm' AND `age` = '18' AND `online_stas` = 'online'") or die(mysql_error());

Кроме того, для обеспечения безопасности вы можете захотеть экранировать параметры запросов с помощью mysql_escape_string () .

0 голосов
/ 14 марта 2012

Вы захотите использовать WHERE и AND, выполнив следующие условия:

"... WHERE `round`= '".$userData["round"]."' AND `sex` = 'm' AND `age` > 18 AND `online_stas` = 'online'"
...