MySql erreur de syntax oO ??

Fermé
wally - 16 mai 2010 à 15:41
 wally - 16 mai 2010 à 22:09
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
A voir également:

9 réponses

mrgeek Messages postés 23 Date d'inscription jeudi 13 mai 2010 Statut Membre Dernière intervention 11 juillet 2010 5
Modifié par mrgeek le 16/05/2010 à 21:42
"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
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 jeudi 13 mai 2010 Statut Membre Dernière intervention 11 juillet 2010 5
16 mai 2010 à 21:47
Remplace ta constante par le nom de la table directement pour voir?
0
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 jeudi 13 mai 2010 Statut Membre Dernière intervention 11 juillet 2010 5
16 mai 2010 à 21:58
Et tu es sûr que ce champ existe dans ta table?
0
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 jeudi 13 mai 2010 Statut Membre Dernière intervention 11 juillet 2010 5
16 mai 2010 à 22:05
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
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
autant pour moi c'est un VARCHAR(25) pas 15 desolé
0