2013-08-29 3 views
0

이것은 지금 나를 미치게합니다.이 쿼리가 WHERE 절을 무시하는 이유는 무엇입니까?

내 쿼리는 WHERE 절을 무시하고 모든 결과 만 출력합니다.

나는 여전히 스크립트를 읽는 것을 알고있다. 왜냐하면 나는 어디에서 user = xxx와 같은 말도 안되는 스크립트를 변경하면 오류가 다시 발생하기 때문이다.

도움 말?

$data = mysql_query(
     "SELECT 

     tbl_messages.id as msgID, 
     tbl_messages.from_user as msgFROM, 
     tbl_messages.to_user as msgTO, 
     tbl_messages.the_message as msgMESSAGE, 
     tbl_messages.status as msgSTATUS, 
     tbl_messages.date as msgDATE, 
     tbl_messages.subject as msgSUBJECT, 

     tbl_users.id as usrID, 
     tbl_users.name as usrNAME, 

     tbl_photos.profile as photosPROFILE, 
     tbl_photos.photo_link as photoLINK, 
     tbl_photos.default_photo as photoDEFAULT 

     FROM tbl_messages 
     LEFT JOIN tbl_users 
     ON tbl_messages.from_user = tbl_users.id 

     LEFT JOIN tbl_photos ON tbl_photos.profile = tbl_users.id 

     WHERE tbl_messages.to_user = 65 AND tbl_photos.default_photo IS NULL OR tbl_photos.default_photo = '1' 
     ORDER BY status DESC") 

답변

1

그것은 단지 추측,하지만 당신은 아마도 WHERE 조항의 일부 주변 일부 괄호가 필요합니다; 그것은 아마 모든 행에 대해 true으로 평가되고 있습니다.

WHERE tbl_messages.to_user = 65 
    AND (tbl_photos.default_photo IS NULL OR tbl_photos.default_photo = '1') 
+0

그런 행운, 그것을 시도했다. – user2527750

+0

기다리십시오, 아니요 - 전화를 기다립니다. 네가 옳아! 나는 너를 오해했다. – user2527750

0

난 당신이 너무과 같이 필요가 있다고 생각 :

WHERE tbl_messages.to_user = 65 
AND tbl_photos.default_photo ='NULL' OR tbl_photos.default_photo = 1 
ORDER BY status DESC 

또는 같은

가 :

WHERE tbl_messages.to_user = 65 
AND tbl_photos.default_photo ='NULL' OR tbl_photos.default_photo = '1' 
ORDER BY status DESC 
관련 문제