2011-02-28 5 views
2

La syntaxe est-elle correcte? Ai-je utilisé IN correctement, ou les valeurs séparées par des virgules doivent-elles être différentes?Pourquoi cette requête MySQL renvoie-t-elle juste 1 résultat?

Il est suivi par le code suivant:

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

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

Un seul résultat est affiché, même si il y a 4 matchs dans le DB.

Répondre

6

'1,2,3,4' est une chaîne, qui est converti en un int. MySQL convertit les chaînes en ints en lisant jusqu'au 1er caractère non numérique, dans votre cas, le ,.

Ainsi,

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

La requête doit être juste:

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

enlever les simples tenailles lorsqu'ils traitent avec INT .. lookups

"SELECT * FROM productOptions WHERE productOptionsID IN (1,2,3,4)" 
Questions connexes