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.
Utilisez IN
.
$sql = 'SELECT *
FROM `table`
WHERE `id` IN (' . implode(',', array_map('intval', $array)) . ')';
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.
Utilisez simplement la syntaxe ID IN ()
:
$sql = "SELECT FROM `table` WHERE `ID` IN (".implode(',',$array).")";
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.
Vous pouvez SELECT WHERE id IN (item1, item2...)
. Parcourez votre tableau PHP) pour construire votre tableau pour la requête.
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
.