2016-11-05 1 views
1

私は質問をする正しい方法を知らない。mysql - animal_typeカラムからすべての犬を返す

私は動物についてのテーブルを持っていると仮定できます。各列には、平均体重、自然気候、animal_typeなどの情報があります。

私はanimal_type犬、猫、魚

あるすべての行は、私は、各タイプの一覧を示し、既に作成された配列、 'で囲まれ、 コード行で区切られてい見たい:

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

を生み出す

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

に解析されます

オペランドは、出力ウェブページ上に3列(S)

を含むべきです。どこが間違っていますか?

+0

FYI:[単一引用符、二重引用符、およびバッククォートを使用する場合](http://stackoverflow.com/questions/11321491/when-to-use-single-quotes-double-quotes-and-backticks) – Barmar

答えて

3

を持参してください

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

この

を試してみてください。その場合は、一重引用符を使用しないでください。あなたが欲しい

AND関数はIN()次のとおりです。

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

のみ、文字列、日付定数に対する、決して列の別名のための単一引用符を使用します。

具体的なエラーは少し難解です。起こっていることは、3つの文字列のタプルが1つの文字列と比較されているということです。そのため、エラーには3つのオペランドが記述されています。そのanimal_typeと仮定すると

+0

その答えを少し編集して参照リンクを追加しますが、 'IN()'は関数であり、演算子ではありません。 –

+0

引用符に関する情報は非常に貴重です。ありがとうございました! – bradboy

0

はおそらく、animal_typeが列で目的の結果

3

は、あなたが使用する必要がある列名です:

$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ありがとうございます。特に文法エラーです。(セット理論は演算子ですが、SQL文学の多くは関数としての名前です) – scaisEdge

関連する問題