2011-02-28 2 views
2

構文は正しいですか?このMySQLクエリーがなぜ1つの結果しか返さないのですか?

SELECT * 
    FROM productOptions 
WHERE productOptionsID IN ('1,2,3,4') 

INを正しく使用しましたか、コンマ区切りの値を異ならせる必要がありますか?

これは、次のコードが続く:

$optionsresultsql= mysql_query($optionsquerysql) or die(mysql_error()); 

while($optionssql = mysql_fetch_array($optionsresultsql)) { 
    $optionNamesID = $optionssql["optionNamesID"]; 
    echo $optionNamesID; 
} 

つのみ結果がDBで4つの試合があるにもかかわらず、示されています。

答えて

6

'1,2,3,4'を単ダニを除去するにはintに変換されている文字列です。 MySQLは文字列をint型に変換し、最初の非数字文字(あなたの場合は,)まで読み上げます。

ので、

IN ('1,2,3,4') = IN (CAST('1,2,3,4' AS INT)) = IN (1) 

クエリは、ちょうど次のようになります。

productOptionsID IN (1,2,3,4) 
9

INT検索を扱う場合..

"SELECT * FROM productOptions WHERE productOptionsID IN (1,2,3,4)" 
関連する問題