44 votes

Comment utiliser le tableau php avec l'opérateur sql IN ?

J'ai un tableau avec deux valeurs et je veux l'utiliser avec l'opérateur sql IN dans la requête select.

Voici la structure de ma table

 id comp_id
1   2
2   3
3   1

J'ai un tableau $arr qui a deux valeurs Array ( [0] => 1 [1] => 2 )

Je veux récupérer l'enregistrement de comp_id 1 et comp_id 2. J'ai donc écrit la requête suivante.

 SELECT * from table Where comp_id IN ($arr)

Mais il ne renvoie pas les résultats.

15voto

Aurimas Points 1653

vous devez convertir le tableau en chaîne séparée par des virgules :

 $condition = implode(', ', $arr);

Et, en plus, vous voudrez peut-être d'abord échapper aux valeurs (si vous n'êtes pas sûr de l'entrée):

 $condition = implode(', ', array_map('mysql_real_escape_string', $arr));

5voto

mishu Points 4706

$arr est un tableau php, au serveur sql vous devez envoyer une chaîne qui sera analysée vous devez transformer votre tableau dans une liste comme 1, 2, etc.

pour cela vous pouvez utiliser la fonction http://php.net/implode

donc avant d'exécuter la requête, essayez

 $arr = implode ( ', ', $arr);

5voto

saba Points 382

Vous devez imploser votre tableau avec ',' virgule

 $imploded_arr = implode(',', $arr);

SELECT * from table Where comp_id IN ($imploded_arr)

4voto

Chakradar Raju Points 2253

vous ne pouvez passer une chaîne à mysql en tant que requête, alors essayez ceci

 mysql_query("SELECT * FROM table WHERE comp_id IN (".implode(',',$arr).")");

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X