[MySQL] Problème requête UPDATE

Résolu/Fermé
Yabhydde Messages postés 9 Date d'inscription mardi 9 janvier 2007 Statut Membre Dernière intervention 21 novembre 2010 - 20 nov. 2010 à 17:04
Yabhydde Messages postés 9 Date d'inscription mardi 9 janvier 2007 Statut Membre Dernière intervention 21 novembre 2010 - 21 nov. 2010 à 02:43
Bonjour,

J'ai créé une petite appli pour enregistrer des paroles de chants, avec leurs auteurs, version, genre, version, image (associé) etc etc, j'ai créé un joli formulaire d'insertion qui fonctionne très bien, voici la requête :

$bd = new MySQL (NOM, PASSE, BASE, SERVEUR);
				
				$sql = $bd->execRequete ("INSERT INTO chants (titre, genre_01, genre_02, genre_03, type, version, langue, memo, parole, images, paragraphes, intervalslider) VALUES ('".$titre."','".$genre_01."','".$genre_02."','".$genre_03."','".$type."','".$version."','".$langue."','".$memo."','".$parole."','".$images."','".$paragraphes."','".$interval."')");


ça fonctionne très bien, ce qui enlève beaucoup de solution au problème. J'ai fais un formulaire pour modifier les informations en récupérant dans la base les infos qui apparaissent alors dans champs du formulaire (le même que celui de l'INSERT).
Je lance donc une joli e requête update que voici :
$sql = $bd->execRequete ('UPDATE chants SET titre='.$titre.', genre_01='.$genre_01.', genre_02='.$genre_02.', genre_03='.$genre_03.', version='.$version.', langue='.$langue.', memo='.$memo.', parole='.$parole.', intervalslider='.$interval.', images='.$images.', paragraphes='.$paragraphes.' WHERE id='.$id.'');


qui ne fonctionne pas du tout, j'ai tenté de remplacer mes variables par titre=test, genre_01=bidule, genre_02=chose much etc etc,il me disais alors qu'il y avait des erreurs la ou il y avais des espaces, après les avoir enlevé il est remonté et ma dis que mon erreur était :

Fatal error: Uncaught exception 'Exception' with message 'Probl?me dans l'ex?cution de la requ?te : UPDATE chants SET titre=Car ta bonté, genre_01=louange, genre_02=, genre_03=, version=MEB, langue=FR (france), memo=, parole=<p> &nbsp;</p> <p> <li> <p> Car ta bonté vaut mieux que la vie</p> <p> Car ta bonté vaut mieux que la vieCar ta bonté vaut mieux que la vie</p> </li> </p>, intervalslider=10000, images=aaaa, paragraphes=aaaa WHERE id=86.<br /> - Erreur de syntaxe pr?s de 'ta bonté, genre_01=louange, genre_02=, genre_03=, version=MEB, langue=FR (fra' ? la ligne 1' in C:\Program Files\EasyPHP5.2.10\www\MEB\ressources\php\MySQL.class.php:33 Stack trace: #0 C:\Program Files\EasyPHP5.2.10\www\MEB\admin\modifier_chant_resultat.php(73): MySQL->execRequete('UPDATE chants S...') #1 {main} thrown in C:\Program Files\EasyPHP5.2.10\www\MEB\ressources\php\MySQL.class.php on line 33

Je comprend pas, ça viens pas des tables (la commande insert fonctionne), ni des variables ni de leur valeurs, pourquoi l'INSERT fonctionne est pas l'UPDATE?

Pourriez vous m'aider s'il vous plait? Merci d'avance

A voir également:

2 réponses

jee pee Messages postés 40559 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 17 décembre 2024 9 459
20 nov. 2010 à 20:28
Salut,

La première piste à suivre, à mon avis, c'est que tu n'utilises pas la même syntaxe de protection des valeurs chaines de caractères dans les 2 cas :

insert double protection ( " et ') : '".$titre."'
update simple protection : '.$titre.'

Ce qui se traduit dans le message d'erreur sur l'update : titre=Car ta bonté

Donc il n'y a plus de délimiteur de zone texte, et c'est syntaxiquement faux

cdlt
1
Yabhydde Messages postés 9 Date d'inscription mardi 9 janvier 2007 Statut Membre Dernière intervention 21 novembre 2010
21 nov. 2010 à 02:40
Merci merci, ça fonctionne maintenant, c'était bien des erreurs de quote ' ", merci beaucoup, j'ai galéré pour pas grand chose mais je suis heureux d'avoir achevé le but. Merci encore
0
Bonjour,

Je suis d'accord avec Jee Pee et pour faire simple je vous suggère d'essayer avec cette requête :

$sql = $bd->execRequete ("
UPDATE chants SET
titre='".mysql real_escape_string($titre)."',
genre_01='".mysql real_escape_string($genre_01)."',
genre_02='".mysql real_escape_string($genre_02)."',
genre_03='".mysql real_escape_string($genre_03)."',
version='".mysql real_escape_string($version)."',
langue='".mysql real_escape_string($langue)."',
memo='".mysql real_escape_string($memo)."',
parole='".mysql real_escape_string($parole)."',
intervalslider='".mysql real_escape_string($interval)."',
images='".mysql real_escape_string($images)."',
paragraphes='".mysql real_escape_string($paragraphes)."'
WHERE
id='".mysql real_escape_string($id)."'
");
1
Yabhydde Messages postés 9 Date d'inscription mardi 9 janvier 2007 Statut Membre Dernière intervention 21 novembre 2010
21 nov. 2010 à 02:43
Merci à toi aussi Me, je n'ai pas eu besoin des "mysql real_escape_string" car j'utilise ckeditor qui me le fais automatique quand j'envoie le formulaire, mais sinon la requête est bonne. Merci encore à vous deux.
0