jointure de table avec un where?

Eléphant du PHP | 257 Messages

13 janv. 2017, 23:19

bonjour j'ai un liens pour voir un profil des membres mais comme je viens de réalise ma premier jointure il y a quelque jours, je suis pas encore parfait sur ce niveau et j'ai une erreur.

le liens
echo '<img src="imdesign/h.png" width="20" height="20" title="Homme"/><a href="http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/profil_membre.php?detail_p='.$id_membre.'"style="color:#0000FF;">'.$pseudo.'</a>';
le select avec la jointure et WHERE
$annonce_sql = "SELECT * FROM membre_plus ME LEFT JOIN photo_profil PP ON ME.id_membre = PP.id_membre WHERE id_membre=".$_GET['detail_p']."";
$res = $connection->query($annonce_sql);
while ($result = $res->fetch()){

Mammouth du PHP | 1967 Messages

14 janv. 2017, 12:10

Il faut que tu précise de quelle table tu regarde id_membre, SQL ne peut le déterminer lui même. Malgré que PP.id_membre est forcement identique à ME.id_membre de r ta jointure, SQL ne le sait pas et ne sait donc pas ce qu'il doit utilisé dans ta clause WHERE
précise de quelle table est tiré ce champs dans ta clause WHERE pour régler le problème
$annonce_sql = "SELECT * FROM membre_plus ME LEFT JOIN photo_profil PP ON ME.id_membre = PP.id_membre WHERE ME.id_membre=".$_GET['detail_p']."";
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 25 Messages

14 janv. 2017, 12:43

Bonjour,

1) Déjà on est pas des devins car tu ne nous a pas montré l'erreur que tu obtiens. Elle n'est pas évidente car vu ton code il peut y avoir une multitude de problèmes
2) Parmi ces problèmes tu utilises une variable publique non filtrée dans ta requête avec le $_GET qui est une très mauvaise pratique car elle permet l'injection SQL et donc le piratage de ton site/code. Par extension cette variable peut contenir n'importe quoi et donc faire planter ta requête.
3) On ne fait pas de SELECT * dans une requête. Quand tu vas au supermarché tu ne remplis pas ton caddie juste pour acheter une baguette à la caisse non? bien là c'est pareil.

++
Architecte de données & applications web
MCSE Data Management & Analytics