[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 -
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 :
ç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 :
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 :
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
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> </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:
- [MySQL] Problème requête UPDATE
- Windows update bloqué - Guide
- Winget update - Guide
- Asus live update - Télécharger - Utilitaires
- Mysql community server - Télécharger - Bases de données
- Wsus offline update - Télécharger - Systèmes d'exploitation
2 réponses
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
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
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
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)."'
");
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)."'
");