2011-08-13 74 views
0

我有這樣的代碼:PHP - 錯誤的選擇 - 查詢

$r=mysql_query("SELECT * FROM advertisements WHERE exposure!='0' AND `status`='2' AND clicks_left_micro>0 OR clicks_left_mini>0 OR clicks_left_standard>0 OR clicks_left_extended>0"); 

上面的代碼,應該只得到2個第一行,在我的數據庫。 (請檢查下面的PIC): http://i51.tinypic.com/dejiw.png

爲什麼會選擇全部3排,當我說具體狀態= 「2」

我該如何解決這個問題?

在此先感謝。

回答

0

您必須使用括號來尊重布爾運算符的優先級。

+0

如何在查詢中包含這些內容?你能舉個例子嗎? –

+0

埃裏克已經回答了你。 :) –

4

這裏是你擁有的一切:

SELECT * FROM advertisements 
WHERE exposure!='0' 
AND `status`='2' 
AND clicks_left_micro>0 
OR clicks_left_mini>0 
OR clicks_left_standard>0 
OR clicks_left_extended>0 

但我認爲,這是你真正想要的東西:

SELECT * FROM advertisements 
WHERE exposure!='0' 
AND `status`='2' 
AND (clicks_left_micro>0 
OR clicks_left_mini>0 
OR clicks_left_standard>0 
OR clicks_left_extended>0) 
+0

+1。太快了:) –

+0

謝謝!有效。 –

0

嘗試encapsling括號中的或部分

AND clicks_left_micro>0 OR clicks_left_mini>0 OR 
clicks_left_standard>0 OR clicks_left_extended>0 

改變到

AND (clicks_left_micro>0 OR clicks_left_mini>0 OR 
clicks_left_standard>0 OR clicks_left_extended>0) 

應該解決它。