8768 sujets

Développement web côté serveur, CMS

Pages :
(reprise du message précédent)

Salut à tous,

Je pense avoir réglé mon problème de slash et de caractères accentués grâce au passage à la version 5.5 de PHP, à l'utilisation de htmlspecialchars, ainsi que du passage en UTF8 general sur ma base mysql.

Maintenant je rencontre une erreur avec ma requête de mise à jour (UPDATE) :

Je pense que la syntaxe n'est pas bonne Smiley decu .

Le message d'erreur :
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 '(clt_raison_sociale, clt_email, clt_adresse1, clt_adresse2, clt_adresse3, clt_vi' at line 1' in /homepages/44/d401701383/htdocs/test/traitement_client.php:48 Stack trace: #0 /homepages/44/d401701383/htdocs/test/traitement_client.php(48): PDOStatement->execute(Array) #1 /homepages/44/d401701383/htdocs/test/admin_modif_clients.php(66): include('/homepages/44/d...') #2 {main} thrown in /homepages/44/d401701383/htdocs/test/traitement_client.php on line 48

Ma requête UPDATE :
$req = $bd->prepare('UPDATE client SET (clt_raison_sociale, clt_email, clt_adresse1, clt_adresse2, clt_adresse3, clt_ville, clt_CP, clt_telephone) VALUES(:raison_sociale, :email, :add1, :add2, :add3, :ville, :cp, :telephone) WHERE clt_id = $id_clt_modif ');
	$req->execute(array(
		'raison_sociale' => $raison_sociale,
		'email' => $email,
		'add1' => $add1,
		'add2' => $add2,
		'add3' => $add3,
		'ville' => $ville,
		'cp' => $cp,
		'telephone' => $telephone,
		));


Par avance, je vous remercie vivement de l'aide que vous m'apporterez.
Je remercie beaucoup Benj pour tous ces précieux conseils, et tout ceux qui m'ont déjà aidé.
Modifié par Alexbass (22 Dec 2014 - 15:06)
La syntaxe de ta requête n'est pas bonne :
UPDATE client SET clt_raison_sociale = :raison_sociale

Attention aussi à ta variable $id_clt_modif qui n'a rien à faire dans une requête préparée.
bonjour Benj,
Comment je sais quelle ligne de ma base de donnée sera modifiée si je n'utilise pas l'ID ?
Bien sur qu'il faut faire un where avec l'id. Mais ta variable doit se trouver dans le tableau de la méthode execute. Ceci afin d'éviter les problèmes de sécurité au niveau des injections sql.
Merci milles fois, je viens de me débloquer grâce à toi encore une fois, et avec un peu de doc aussi.

J'ai fais ça :
$req = $bd->prepare('UPDATE client SET clt_raison_sociale = :raison_sociale,  clt_email = :email, clt_adresse1 = :add1, clt_adresse2 = :add2, clt_adresse3 = :add3, clt_ville = :ville, clt_CP = :cp, clt_telephone = :telephone WHERE clt_id = :id_clt_modif');
	$req->execute(array(
		'raison_sociale' => $raison_sociale,
		'email' => $email,
		'add1' => $add1,
		'add2' => $add2,
		'add3' => $add3,
		'ville' => $ville,
		'cp' => $cp,
		'telephone' => $telephone,
		'id_clt_modif' => $id_clt_modif,
		));
en fait, c'est assez simple Smiley smile (une fois qu'on a la solution !!! Smiley smile )
Pages :