Requête SQL INNER JOIN + IN

Résolu
parousky Messages postés 325 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -
Bonjour,
j'essaye de faire une requête SQL avec une jointure plus une condition IN mais ça ne fonctionne pas...
Voilà ma requête :

$listeID = implode(',', $liste);

$sql = "SELECT * FROM users INNER JOIN comments ON (users.ID = comments.IDC) AND comments.IDC IN ('$listeID');";

$reqf = $bdd->query($sql);

while($donnees = $reqf->fetch())
{
echo $donnees['ID'];
}

Où $liste est un array.
J'ai aussi essayé avec une requête préparée, mais rien à faire, ça ne m'affiche rien...

Voyez-vous une erreur dans ma requête ?

Merci d'avance pour vos réponses !

2 réponses

  1. Utilisateur anonyme
     
    Bonjour

    Oui, il y a une erreur dans ta requête.

    La liste contenue dans ton IN a un seul élément. Je précise : si par exemple ton tableau $liste contenait les trois nombres 1, 2 et 3
    Alors le résultat du implode est 1,2,3
    et ta requête est :
    ... comments.IDC IN ('1,2,3')
    .
    Cette condition n'est satisfaite que si comments.IDC vaut exactement '1,2,3'.

    Je suppose qu'en fait tu voulais
    ... comments.IDC IN (1,2,3)
    : il ne fallait pas mettre d'apostrophes.

    Maintenant, si ta liste comportait des textes, comme aa,bb et cc, la requête que tu veux est
    ... comments.IDC IN ('aa','bb','cc')
    .
    Il faut bien des apostrophes cette fois, mais il en faut AUSSI au niveau de chaque virgule, ce qui est facile à obtenir avec le implode :
    $listeID = implode("','", $liste);
    0
  2. parousky Messages postés 325 Date d'inscription   Statut Membre Dernière intervention   6
     
    Oui c'était bien ça !
    Merci beaucoup pour ton aide !
    0
    1. Utilisateur anonyme
       
      De rien :-)
      0