web-dev-qa-db-fra.com

MySQL PHP - CHOISISSEZ O id = array ()?

Duplicate possible:
requête MySQL utilisant un tablea
Passer un tableau à mysql

J'ai un tableau en PHP:

$array = array(1, 4, 5, 7);

Comme vous pouvez le voir, j'ai un tableau de valeurs différentes, mais je veux écrire une instruction MYSQL qui va vérifier si le id est égal à l'une des valeurs du tableau. Par exemple, si une ligne a un id de 1, elle la retournera, la même chose pour 4, 5 et 7. La longueur du tableau peut varier en fonction de la nature du programme. où est le problème. Puis-je juste faire:

SELECT ...
  FROM ...
 WHERE id = '$array'

Ou y a-t-il un meilleur moyen?
Si je ne savais pas trop, veuillez me demander plus d’informations.

37
user569322

Utilisez IN.

$sql = 'SELECT * 
          FROM `table` 
         WHERE `id` IN (' . implode(',', array_map('intval', $array)) . ')';
103
alex

Ce que vous recherchez, c'est l'instruction IN(). Cela testera si un champ donné contient une ou plusieurs valeurs.

SELECT * FROM `Table` WHERE `id` IN (1, 2, 3)

Vous pouvez utiliser une simple boucle pour convertir votre $array variable dans le format approprié. Veillez à prendre en compte l'injection SQL si les valeurs de votre tableau proviennent du début.

28
Nathan Taylor

Utilisez simplement la syntaxe ID IN ():

$sql = "SELECT FROM `table` WHERE `ID` IN (".implode(',',$array).")";
16
Ben D

Vous pouvez écrire votre requête comme ceci:

select * from table where id in (1, 4, 6, 7)

Vous pouvez ajouter autant de valeurs que nécessaire.

1
Mosty Mostacho

Vous pouvez SELECT WHERE id IN (item1, item2...). Parcourez votre tableau PHP) pour construire votre tableau pour la requête.

0
yoozer8

Vous voudrez utiliser l'opérateur IN:

$sql = 'SELECT FROM WHERE id IN (' . implode(",", $array) . ')';

MySQL peut limiter le nombre de valeurs que vous pouvez utiliser dans une liste avec l’opérateur IN.

0
David Faber