MySql erreur de syntax oO ??

wally -  
 wally -
Bonjour tout le monde

Alors voilà, je crée un système de MP sur un site perso, et mon problème concerne une simple requête select qui me parait bien formée pourtant
  // $user est un objet
  // echo $user->idu m'affiche bien l'id user et se trouve d'ailleur dans l'erreur de syntaxe
  // l'id user est une chaîne de caractère alphanumérique
  define("_INBOX_TABLE","my_inbox_table");
  $req = "SELECT * FROM " . _INBOX_TABLE . " WHERE for='" . $user->idu . "'";
  $qry = $sql->query($req);

et mon erreur est :
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 'for='L'id affiché'' at line 1

je pense qu'il refuse ma clause WHERE mais je ne voi pas pourquoi, la colonne for existe et la table contient bien des données dont for= l'id user

me suis dit peut-être que for est réservé j'ai essayer en changeant la colonne for en "to" et meme en "destinataire" et le résultat est toujours le même

d'avance merci de l'aide que vous pourriez-m'apporter

9 réponses

mrgeek Messages postés 23 Date d'inscription   Statut Membre Dernière intervention   5
 
"for" est un mot clé SQL

donc pour sélectionner le champ for tu dois l'entourer de quotes inversées (alt gr + 7) 'for'
0
wally
 
merci pour votre réponse

je me doutait un peu pour for, mais j'ai changer comme je le dit le nom de la colonne en "to" d'abord puis comme cela me mettait toujours l'erreur de syntaxe j'ai décidé de la renommer encore une fois en "destinataire" mais l'erreur de syntaxe est toujours là
$req = "SELECT * FROM " . _INBOX_TABLE . " WHERE destinataire='" . $user->idu . "'"; 
$qry = $sql->query($req); 


je ne vois aucune raison à cette erreur de syntaxe

donc la je sèche :s
0
mrgeek Messages postés 23 Date d'inscription   Statut Membre Dernière intervention   5
 
Remplace ta constante par le nom de la table directement pour voir?
0
wally
 
j'ai essayer en virant la constante et en mettant directement le nom de la table, même résultat, j'ai essayer en retirant $user->idu et le remplaçant par un identifiant en brut le résultat est le même
$req = "SELECT * FROM my_inbox_table WHERE destinataire='Arf58cfko05TuHlPo'";
$qry = $sql->query($req);

et l'erreur est toujours là :s
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mrgeek Messages postés 23 Date d'inscription   Statut Membre Dernière intervention   5
 
Et tu es sûr que ce champ existe dans ta table?
0
wally
 
structure de la table

- id (INT) (10) (PRIMARY KEY) (A.I.)
- from (VARCHAR) (15)
- destinataire (VARCHAR) (15)
- date (INT) (15)
- title (VARCHAR) (80)
- texte (TEXT)
- etat (INT) (1)
0
mrgeek Messages postés 23 Date d'inscription   Statut Membre Dernière intervention   5
 
ton destinataire est un varchar 15 fais une condition sur 18 caractères ... MySql ne ressortirait pas d'erreur mais juste une ligne vide mais peut être que PDO lance une exception de typage... tu peux vérifier si je dis pas de conneries?
0
wally
 
alors là je comprend plus rien, j'ai renommer la colonne "from" en "expediteur" et l'erreur à disparut, surtout que dans une autre de mes table j'utilise se nom de colonne 'from" et j'ai pas d'erreur

bisar bisar, quelqu'un à une explication ?
donc résolu en fin de compte même si je comprend pas trop pourquoi :s

encore merci mrgeek pour vos participation :D
0
wally
 
autant pour moi c'est un VARCHAR(25) pas 15 desolé
0