erreur 1064

lacfab
Invité n'ayant pas de compte PHPfrance

19 sept. 2006, 13:30

Salut voilà j'ai une fonction qui doit ajouter 1 à une valeur si celle-ci existe déjà ... seulement il me fait une erreur ... je ne vois pas du tout d'où celà vient !

Code : Tout sélectionner

$testaff[quantite_sess]++; echo $testaff[quantite_sess]; mysql_query("UPDATE shop_sessions WHERE id_sess='$id_de_session' AND produit_sess=$article SET quantite_sess='$testaff[quantite_sess]'") or die ('<br><br>ERREUR update panier A<br>'. mysql_error());
Résultat :
ERREUR update panier A
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 'WHERE id_sess='0d5a371160883e16cd1a865f2dafe53e' AND produit_se

Merci d'avance :)

lacfab
Invité n'ayant pas de compte PHPfrance

19 sept. 2006, 13:30

Voici ma table :

CREATE TABLE `shop_sessions` (
`id_sess` char(32) NOT NULL default '',
`expiration_sess` int(11) NOT NULL default '0',
`produit_sess` char(25) NOT NULL default '',
`quantite_sess` int(2) NOT NULL default '0'
) TYPE=MyISAM;

INSERT INTO `shop_sessions` VALUES ('0d5a371160883e16cd1a865f2dafe53e', 1158681214, '3', 1);

Eléphant du PHP | 396 Messages

19 sept. 2006, 13:34

Tu n'as pas précisé quel champs de la table tu veux mettre à jour.
La syntaxe correcte est : UPDATE table SET champs='nouvelle valeur' WHERE conditions

De plus tu devrais echapper tes variables ;)

lacfab
Invité n'ayant pas de compte PHPfrance

19 sept. 2006, 13:47

si je l'ai mis

Code : Tout sélectionner

SET quantite_sess='$testaff[quantite_sess]'
Echapper mes variables ?? comment ça ?

Eléphant du PHP | 396 Messages

19 sept. 2006, 13:50

Le SET= doit être avant le WHERE

Echapper c'est à dire sortir les variables de la chaîne.

Ici :
WHERE id_sess='".$id_de_session."'

lacfab
Invité n'ayant pas de compte PHPfrance

19 sept. 2006, 13:55

Mille merci je sais pas pourquoi j'ai mis le where avant le set mais bon maintenant ça remarche !
Je savais pas qu'il était important de ressortir les variables ... je le fais quelque fois et parfois non ... ça joue sur quoi ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

19 sept. 2006, 15:01

1°/ echapper une variable signifie proteger les caractère dangereux, pas sortir la variable d'une chaine dont le nom est extraire

2°/ extraire une chaine permet de ne jamais être tenté d'écrire une varaible dans une chaine entouré de '
$toto = "bonjour";
echo "$toto"; //affiche bonjour
echo '$toto'; //affiche $toto
Et tu peut me croire, même si tu as l'habitude de mettre des ", il va forcément y avoir un jour où tu va avoir besoin d'utiliser ' ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 396 Messages

19 sept. 2006, 16:23

1°/ echapper une variable signifie proteger les caractère dangereux, pas sortir la variable d'une chaine dont le nom est extraire
Eu vi concatener pas echapper :oops: