[RESOLU] Erreur MySQL (UPDATE)

Petit nouveau ! | 5 Messages

12 juil. 2007, 10:32

Bonjour à tous,
Je ne suis pas trop un débutant en PHP (j'en fait depuis plusieurs mois) mais j'ai une question facile à résoudre mais j'ai des compétences en MySQL assez limitées donc le problème c'est qu'il y a une erreur dans ma syntaxe SQL :

Erreur SQL :

Code : Tout sélectionner

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 'dec='Test dessin n°1' WHERE id='00028'' at line 1
Voici les codes que j'ai essayés :

Code : Tout sélectionner

UPDATE bdd_oeuvres SET art='Edgar', fic='mlniger.jpg', eco='ecole_au', dec='Test dessin n°1' WHERE id='00028' UPDATE bdd_oeuvres SET art='Edgar', fic='mlniger.jpg', eco='ecole_au', dec='Test dessin n°1' WHERE id=00028
Mais rien ne marche, j'ai même essayer de remplacer les guillemets simple par des doubles mais rien n'y fait !
Merci de m'aider ! :P

ViPHP
ViPHP | 928 Messages

12 juil. 2007, 10:41

Bonjour,
l'erreur vient de là : dec='Test dessin n°1'.

Apparament dec est un mot clef réservé de MySQL.

@+

Petit nouveau ! | 5 Messages

12 juil. 2007, 10:44

Ben pourtant j'arrive à faire un INSERT INTO avec... :-k

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

12 juil. 2007, 11:09

Tu peux essayer de protéger le mot clé avec les apostrophes inversées ` pour dire à mysql qu'il s'agit d'un nom de champ :) (à défaut de renommer le champ)

A voir aussi le type de champ de ton id ... si c'est un varchar il faut les quotes... si c'est un entier, il ne faut pas les 0 devant :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 5 Messages

12 juil. 2007, 11:14

Merci beaucoup pour vos remarques ! Mais pourrais-tu m'en dire plus sur les apostrophes inversées ? Sinon, 'id' est un entier de type SMALLINT avec attribues UNSIGNED ZEROFILL.

EDIT: à force de me parler de varchar j'ai mis n'importe quoi, c'est un SMALLINT, désolé...
Modifié en dernier par bibi675 le 12 juil. 2007, 11:48, modifié 1 fois.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

12 juil. 2007, 11:41

C'est du spécifique mysql, et il vaut sincerement mieux éviter d'utiliser des mots clés réservés pour ses nom de champs, mais tu peux donc utiliser cette apostrophe ` (Alt gr + 7) pour protéger les noms de tes champs ou de tes tables :

Code : Tout sélectionner

UPDATE bdd_oeuvres SET ... , `dec` = 'Test dessin n°1'
Pour l'id, s'il s'agit d'un varchar, il te faut les apostrophes autour de ta chaine :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 5 Messages

12 juil. 2007, 11:50

Ca marche !
Merci beaucoup Ryle ! :D
Image