C'est mon premier essai de requête sur deux tables, essai infructueux pour lequel une aide serait la bienvenue.
Ma première table, nommée "table_baia" contient les inscriptions des membres à des évènements, avec entre autre les champs "id_evenement", "date", "evenement", "membre" (pseudo) , "id_membre", "nbre_participants"
La seconde table nommée "membres" à entre autre les champs "id" et "nom"
Pour un évènement donné je souhaite pouvoir lister les membres inscrits avec leurs noms, pseudos et nombre de participants, il me faut donc aller chercher le nom dans la table "membres" avec les champ communs "id_membres" de la table "table_baia" et "id" de la table "membres".
Voici ma requête
$sql = "SELECT b.date, b.evenement, b.membre, b.nbr_participants, a.nom
FROM table_baia b WHERE id_evenement = $id
INNER JOIN membres a ON b.id_membre = a.id ORDER BY nom ASC";
$req = $bdd->query($sql) or die(print_r($bdd->errorInfo()));
while ($a = $req->fetch()){
echo "$a[nom] $a[membre] $a[nbr_participants]"; }
$id est transmis par GET
J'obtiens l'erreur suivante
Array ( [0] => 42000 [1] => 1064 [2] => You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INNER JOIN membres a ON b.id_membre = a.id ORDER BY nom ASC' at line 3 ) 1
Comme précisé c'était la première fois que j'utilisais cette fonction et dans mes recherches pour la comprendre je n'avais rien vu concernant le positionnement du WHERE, maintenant je sais et ça marche beaucoup mieux, même très bien.
Pour le GET je teste quand même la valeur reçue si elle entre dans une fourchette de valeur possible.
> Pour le GET je teste quand même la valeur reçue si elle entre dans une fourchette de valeur possible.
Ce n'est pas pour autant que ça te garantit de ne pas en avoir (s'il y a cast en implicite en int sur tes tests mais que tu réutilises $_GET['id'] derrière).
Et puis, je ne comprends pas, ici, à chaque fois que je dis ça, on me sert une excuse bidon pour ne pas préparer la requête. Ca vous coûte quoi de préparer une requête ? Absolument rien alors que c'est la seule façon correcte de vous prémunir à 100% de toute injection SQL. Ca me dépasse. Bref, ce n'est pas mon problème, je vais aller prendre ma tisane.
(ne parlons pas du or die, mauvais pratique, ou encore des possibles XSS faute de htmlspecialchars sur l'echo)
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli