2016-11-05 20 views
1

我不知道提問的正確方法。mysql - 從animal_type列中返回所有的狗

讓我們假設我有一張關於動物的表格。每行都有諸如平均體重,本土氣候和動物類型等信息。

我想看看是animal_type狗,貓,魚都行

我已經創建了一個列出了各類型由'包圍,一, 代碼行分隔的數組:

$sql = "SELECT * FROM mytable WHERE ({$want_to_see}) = 'animal_type'"; 

被解析成

SELECT * FROM mytable WHERE ('dogs','cats','fish') = 'animal_type' 

其產生

操作數應包含3列(多個)

在輸出網頁。我哪裏錯了?

+0

僅供參考:[何時使用單引號,雙引號和反引號](http://stackoverflow.com/questions/11321491/when-to-use-single-quotes-double-quotes-and-backticks) – Barmar

回答

3

據推測,animal_type是一列。如果是這樣,不要使用單引號。

你想要的功能是IN()

$sql = "SELECT * FROM mytable WHERE animal_type IN ({$want_to_see})"; 

只能使用字符串和日期常量單引號,從不爲列別名。

您的具體錯誤有點難以理解。發生的事情是,3個字符串的元組被比較爲單個字符串。這就是錯誤提到3個操作數的原因。

+0

我製作對添加引用鏈接的答案稍作修改,但「IN()」是一個函數,而不是操作符。 –

+0

有關引號的信息非常有價值。謝謝! – bradboy

0

嘗試

SELECT * FROM mytable WHERE animal_type in ('dogs','cats','fish') 

這應該帶來預期的效果

3

假設animal_type是你應該使用的列名:

$sql ="SELECT * FROM mytable WHERE animal_type in ('dogs','cats','fish');"; 

您應該使用IN()功能元素的數組。

+0

[*相同的編輯適用於此... *](http://stackoverflow.com/questions/40441940/mysql-return-all-dogs-from-animal-type-column#comment68130887_40442001) –

+0

@ Fred-ii- many特別是對於語法錯誤..(對於集合Theory in是一個操作符...但對於很多sql文檔來說,名稱是一個函數..) – scaisEdge