2010-03-20 54 views
3

默認情況下,我有一個列在mysql表中爲NULL。選擇行不爲空的行?

我想選擇一些行,但只有當該列中的字段值不是NULL時。

鍵入它的正確方法是什麼?

$query = "SELECT * 
      FROM names 
      WHERE id = '$id' 
      AND name != NULL"; 

這是正確的嗎?

回答

6

你應該使用(假設$id爲整數):

$query = "SELECT * 
      FROM names 
      WHERE id = '" . (int) $id ."' 
      AND name IS NOT NULL"; 

必須使用IS NULLIS NOT NULLworking with NULL values

+0

請記住,php整數和MySQL字段類型可能具有不同的值範圍。所以'(int)$ id'可能是可行的,可能不是。 – VolkerK 2010-03-20 14:51:57

+0

@VolkerK我在看到未轉義的變量進入SQL綁定的字符串,只是提高知名度而顫抖:) – Andy 2010-03-20 14:59:42

+0

是否需要假設$ id爲整數?我從來沒有做過這樣的事情,但永遠不會遇到問題! – Simon 2010-03-20 17:30:48

8
AND name IS NOT NULL 

(NULL比較需要特別的是,並沒有在SQL操作)

+0

大寫字段名稱會出錯 – Andy 2010-03-20 13:43:48

+0

請原諒,在幾個不重要的數據庫中工作本週MSes。將編輯。 – 2010-03-20 13:45:49

+0

@Andy:MySQL對列/表名不區分大小寫。 – Crozin 2010-03-20 13:46:36