2010-03-23 49 views
0

在一個頁面,它應該顯示的記錄,從下拉菜單中有以下選擇一個月,它是在?個月=設定三月MySQL查詢例外

所以查詢將做到這一點

$sql = "SELECT * FROM schedule WHERE month = '" . Clean($_GET['month']) . "' AND finished='0' ORDER BY date ASC"; 

但它顯示在完成的列中值爲2的記錄,我不希望查詢包含此值。

我已經試過

$sql = "SELECT * FROM schedule WHERE month = '" . Clean($_GET['month']) . "' AND finished='0' OR finished = '1' OR finished = '3' ORDER BY date ASC"; 

但它顯示了在不同月份的記錄時,它不應該是。

所以基本上我想要的記錄排除擁有的在不會在頁面中顯示的記錄中的值的記錄。

回答

0

你的第一個查詢應該做你想做的。行finished = '2'不應退還。

忽略不存在在你的第二個查詢一個錯誤,你應該修正:

$sql = "SELECT * FROM schedule WHERE month = '" . Clean($_GET['month']) . 
     "' AND (finished='0' OR finished = '1' OR finished = '3') ORDER BY date ASC"; 

不同的是圍繞or子句,因爲括號小於或更強烈地結合。

你也可以實現更簡潔使用IN相同的結果:

$sql = "SELECT * FROM schedule WHERE month = '" . Clean($_GET['month']) . 
     "' AND finished IN ('0', '1', '3') ORDER BY date ASC"; 
+0

哇,快速回答:)謝謝你,我用你的第二個代碼 – MacMac 2010-03-23 21:50:20

0

AND finished='0' OR finished = '1' OR finished = '3'

AND finished != 2

AND (finished = 0 OR finished = 1 OR finished = 3)