[MySQL] Problème requête UPDATE

Résolu
Yabhydde Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   -  
Yabhydde Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   -
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 41513 Date d'inscription   Statut Modérateur Dernière intervention   9 716
 
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   Statut Membre Dernière intervention  
 
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
Me
 
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   Statut Membre Dernière intervention  
 
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