Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 23/08/2013, à 12:00

Morgiver

[RESOLU][PHP/PDO] Soucis avec les jointures

Salut smile

J'ai commencé à potasser les jointures en SQL, j'en ai besoin au boulot.

J'ai donc 5 tables :

- Table "individu"     : id nom prenom email telephone
- Table "nom"          : id nom
- Table "prenom"     : id prenom
- Table "email"         : id email
- Table "telephone" : id telephone

Vous l'aurez compris, les champs de la table individu contiennent les id des entrée dans les autres tables.

Voilà ce que donne ma requête :

$req = $db->query("SELECT * FROM individu JOIN nom ON 'individu'.'nom' = 'nom'.'id' 
					JOIN prenom ON 'individu'.'prenom' = 'prenom'.'id' 
					JOIN email ON 'individu'.'email' = 'email'.'id' 
					JOIN telephone ON 'individu'.'telephone' = 'telephone'.'id' 
					WHERE 'individu'.'id' = '1'");
$donnees = $req->fetch(PDO::FETCH_ASSOC);

Et voici l'erreur que je me prend :

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 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 '.'nom' = 'nom'.'id' JOIN prenom ON 'individu'.'prenom' = 'prenom'.'id' ' at line 1' in C:\Users\mant\Documents\EasyPHP-5.3.9\www\testing\jointure\jointure.php:21 Stack trace: #0 C:\Users\mant\Documents\EasyPHP-5.3.9\www\testing\jointure\jointure.php(21): PDO->query('SELECT * FROM i...') #1 {main} thrown in C:\Users\mant\Documents\EasyPHP-5.3.9\www\testing\jointure\jointure.php on line 21

J'imagine que j'ai du me planter quelque part, mais j'arrive vraiment pas à savoir où, même après une recherche sur google.

le code complet du script de test :

<?php

include 'config.class.php';

$db = new Config();
$db = $db->bdd();

$req = $db->query("SELECT * FROM individu JOIN nom ON 'individu'.'nom' = 'nom'.'id' 
					JOIN prenom ON 'individu'.'prenom' = 'prenom'.'id' 
					JOIN email ON 'individu'.'email' = 'email'.'id' 
					JOIN telephone ON 'individu'.'telephone' = 'telephone'.'id' 
					WHERE 'individu'.'id' = '1'");
$donnees = $req->fetch(PDO::FETCH_ASSOC);

print_r($donnees);

?>

Merci d'avance pour votre aide smile

Morgiver

Dernière modification par Morgiver (Le 23/08/2013, à 13:37)

Hors ligne

#2 Le 23/08/2013, à 13:20

Epehj

Re : [RESOLU][PHP/PDO] Soucis avec les jointures

Salut,

C'est pas le quote qui fout la brouille ?


Linux user #447629 - Ubuntu user # 21770
C'est en sciant que Léonard devint scie

Hors ligne

#3 Le 23/08/2013, à 13:23

Morgiver

Re : [RESOLU][PHP/PDO] Soucis avec les jointures

EDIT :
My bad, je ne savais pas ce que c'est un quotes, maintenant je le sais.
Bon apparemment c'est bien ça, je les ai enlevé et ça fonctionne niquel.

Par contre, j'ai pas trop bien compris, parce que le tuto que j'ai lu, le gars en mettait, ou alors c'est pas des quotes et j'peux aller me coucher xD

http://www.siteduzero.com/informatique/ … externes-1

Tu parles du ' " ' ?
Si c'est ça, alors non, ce n'est pas ça, j'ai essayé avec le guillemet simple.

Dernière modification par Morgiver (Le 23/08/2013, à 13:37)

Hors ligne

#4 Le 23/08/2013, à 13:45

Epehj

Re : [RESOLU][PHP/PDO] Soucis avec les jointures

Non je parlais des quotes simples, autour des noms des tables et des champs ('individu'.'nom'). Je fais plus de dev' web donc je suis plus tellement au courant, mais je viens de regarder (très) vite fait sur le net, pas vu de gens qui fassent des requêtes en utilisant ces ' .

Edit :
ouuuuups, j'ai pas appuyé sur envoyer !
En fait il utilise ce que j'appelle des backquotes (AltGr + 7 ) sur un clavier classique wink

Dernière modification par Epehj (Le 23/08/2013, à 13:49)


Linux user #447629 - Ubuntu user # 21770
C'est en sciant que Léonard devint scie

Hors ligne

#5 Le 23/08/2013, à 14:00

Morgiver

Re : [RESOLU][PHP/PDO] Soucis avec les jointures

Apparemment oui, j'ai demandé à d'autres, c'est l'explication qui revient aussi.

Me demande pourquoi dans un tuto qui est censé expliquer la syntaxe des jointures il tape directement des backquotes.
Ou alors il aurait du expliquer pourquoi ! Parce qu'en mettre directement et prendre l'habitude d'en mettre, on fini par prendre le pli tongue

Apparemment c'est pour des situation ou tu te retrouve avec des mots utilisé par mysql genre "force" ou "like".

Hors ligne

#6 Le 28/08/2013, à 19:07

alius

Re : [RESOLU][PHP/PDO] Soucis avec les jointures

hmm jamais utilisé cette syntaxe pour un champ ou une table ! la désignation seule suffit.

Cependant vous pouvez avoir ce probleme pour les valeur de type chaine de caractère et notamment lorsque l'on utilise un langage tel que php à faible typage lors d'une concaténation par exemple. Attention


Alius

Hors ligne

#7 Le 30/08/2013, à 14:25

lemoineo

Re : [RESOLU][PHP/PDO] Soucis avec les jointures

Bien que marqué résolu, la question n'a pas reçu la réponse complète, même si Epehj avait raison sur le fond.
Ceci n'a rien à voir avec PHP.
Pour éviter les conflits entre les noms d'objets (tables, bases, attributs, etc ) et les mots-clé,
MYSQL encapsule ses noms par un caractère "`" (AltGr 7) à côté du "è"
Et PHP peut gérer par ailleurs les ' et " sans s'occuper des `
Bonne journée
Olivier


Retraité (ex-développeur)
le Kitesurf me permet de décrocher de l'informatique !
Bien sûr, tablette et smartphone sont rootés ! Mais je préfère un PC sous xubuntu !

Hors ligne