2012-03-14 4 views
1

는 ... 여러 조건에 따라 mysql databasequery하는 방법을 알고 세 이상 온라인 모든 남성 사용자를 찾기 위해 노력 메신저 18MySQL의 여러 및 조건의

PHP 코드 :

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

여기에는 더 큰 문제가 있다고 생각합니다. 테이블에 나이를 저장하는 것은 거의 항상 나쁜 생각입니다. 내년에는 모든 사람이 나이가 들기 때문에 내년의 모든 데이터가 부정확 할 것입니다. 생년월일을 저장하고 데이터 검색시 연령을 계산하는 것이 훨씬 낫습니다. – nnichols

답변

2

응답을 읽고 여전히 오류가 있다는 사실을 알고 난 후 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 세 이상되고 싶은 명세서에 기반 라운드 수표를 제거하지만, 다시 추가 할 수 있습니다. 다른 가청 오류는 숫자 값 18 대신에 문자열 값 18 대신에 age을 비교할 수 있습니다. 변경되었으므로 변경되었습니다 (자동으로 변환 될 수도 있지만 변경 될 경우 동일한 유형으로 확인하는 것이 더 좋습니다).

시도해보고 효과가 있는지 확인하십시오.

1

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()); 

또한, 나는 당신이 동일하지, 모든 사용자가 18 세 이상으로 원하는 진술 인해 설명에 >= 대신 =를 사용하도록 age 수표를 변경했습니다. 나는 또한 위의 사람들뿐만 아니라 18 세의 사람들도 포함 시키길 원한다고 가정합니다. 그렇지 않다면 >으로 변경하십시오.

+0

팁 주셔서 감사하지만 여전히 오류가 있습니다. –

+0

@ YoungnateDaGreat 어떤 오류가 발생합니까? 나는 그 오류가 무엇인지 모른다면 당신을 도울 수 없습니다. –

0

다음과 같은 조건으로 끝나는, WHEREAND을 사용할 수 있습니다 :

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

이 작업이 없습니다. –

0

은 여러 조건을 지정할 때 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()); 

또한, 보안 pruproses를 들어, mysql_escape_string()와 쿼리 매개 변수를 탈출 할 수 있습니다.