Requête avec attribut IN : SQL

Résolu
devman01 Messages postés 31 Date d'inscription   Statut Membre Dernière intervention   -  
devman01 Messages postés 31 Date d'inscription   Statut Membre Dernière intervention   -
bonjours, je veux récupérer une liste d’identifiants "id" de la base de données à condition que le "matricule" soit un élément du tableau "$Tab" :

$Tab=array(5,6,7,13,15);

$rq=mysqli_query($connect,"SELECT id FROM user WHERE matricule IN $Tab") or die (mysqli_error($connect));

.....


Mais ça n'affiche rien !

je sais qu'il y a une solution en PHP, comme récupérer tous les "id" et "matricule" , les mettre dans des variables et faire un test :

if(in_array($matricule,$Tab))

Mais la enregistrements sont nombreux, ça peut être lent un peu, c'est pour cela je veux filtrer la sélection grâce à IN si c'est possible.

Est-ce que vous me proposer une idée pour faire ça; et merci d'avance.

2 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 753
 
Bonjour,

$Tab=array(5,6,7,13,15);

$strTab = "'".join("','",$Tab)."'"; // convertit ton array sous la forme '5','6','7','13','15'
$requete = "SELECT id FROM user WHERE matricule IN ($strTab)";

$rq=mysqli_query($connect,$requete) or die (mysqli_error($connect));

2
devman01 Messages postés 31 Date d'inscription   Statut Membre Dernière intervention   1
 
Merci jordane45, ça marche très bien
0
Regis59 Messages postés 21143 Date d'inscription   Statut Contributeur sécurité Dernière intervention   1 322
 
Salut,

Je ne sais pas si tu peux le faire avec le tableau, je n'ai pas testé mais quoi qu'il en soit, dans ta requête, tu dois concaténer ta requête et ta variable !
Écris comme cela: "SELECT id FROM user WHERE matricule IN $Tab", tu n'utilises pas ta variable la...

Voila, essaie avec cette base et remet nous la requête corrigée ;-) (avec un message d'erreur s'il y a)
"SELECT table WHERE Ma_Variable IN (".tontableau." )"
"Impossible is nothing"
0
devman01 Messages postés 31 Date d'inscription   Statut Membre Dernière intervention   1
 
merci Regis59 mais dommage ça marche pas ..
0