Interclassement et erreur syntaxe
J'essaye de créer une interface admin pour mon site dont je pourrais modifier le contenu. Le soucis c'est que lorsque je veux modifier le contenu via l'interface administration j'ai l'erreur
Erreur de syntaxe pr?s de "xxxx"
Je pense que ça vient de l'inter-classement dans ma base de donnée (qui etait à la base sur "utf8_unicode_ci" et suite à cette erreur je l'ai modifié en "utf8_general_ci" mais le problème est toujours présent)
Quelqu'un aurait une idée?
EDIT: Cette erreur vient à chaque fois que je met un apostrophe
7 réponses
Problème rencontré lors de la modification de contenu via une interface d'administration : une erreur de syntaxe près de 'xxxx' et une suspicion d'interclassement dans la base. Des échanges évoquent que les apostrophes dans les champs modifiés déclenchent l'erreur et que le basculement de utf8_unicode_ci vers utf8_general_ci n'a pas suffi à résoudre le problème. Plusieurs propositions recommandent d'échapper les valeurs POST lors de la construction de la requête UPDATE, par exemple avec addslashes ou mysql_real_escape_string, et d'utiliser une syntaxe correcte pour les guillemets. D'autres remarquent l'erreur 'Champ 'l'eau' inconnu dans field list' et soulignent l'importance d'analyser les entrées utilisateur et les requêtes générées pour prévenir les erreurs de syntaxe.
-
Je ne pense pas, ce genre d'erreur est une vrai erreur de syntaxe, certainement sql dans ton cas.
Le mieux serait que tu donne ce qui se trouve avant, à la place et après xxxx...
;-) -
J'ai modifié mon message trop tard,
Le soucis apparait à chaque apostrophe (je n'ai pas essayé avec d'autres caractères...) -
Oui mais ce serait quand même bien que tu mette le code où ça buggue...
-
D'accord voici la fonction que j'utilise:
function modif_accueil_fr() { include('connexion.php'); if((!empty($_POST['accueil_fr_titre'])) && (!empty($_POST['accueil_fr_contenu']))) { $titre= ($_POST['accueil_fr_titre']); $contenu= ($_POST['accueil_fr_contenu']); $database="monsite"; if(!mysql_select_db($database,$connexion)) { die("<p class='alert'>Selection de la base de données echouée\n</p>"); } $requete= "UPDATE 'accueil_fr' SET accueil_fr_titre='".$_POST["accueil_fr_titre"]."', accueil_fr_contenu='".$_POST["accueil_fr_contenu"]."'"; $result=mysql_query($requete,$connexion); if(!$result) { die("<p class='alert'>Requete incorrecte:</p>".mysql_error()); } mysql_close($connexion); echo "<p class='reussi'>L'accueil a ete modifie correctement</p>"; }else { echo"<p class='alert'> le titre ou le contenu n'est pas remplit</p>"; } }
Je tiens à ajouter que j'avais le message d'erreur "requête incorrecte" ca sera plus facile de trouver l'erreur peut être
PS: Depuis que j'ai modifié l'interclassement, je ne peux plus rien mettre dans ma base de données! Lorsque je rentre quelque chose j'ai bien le message "l'accueil a été modifié correctement" et pourtant rien ne s'affiche et rien n'a été mdoifié dans ma base de donnée... -
Une dernière pour la route :
$requete= "UPDATE 'accueil_fr' SET accueil_fr_titre=\"".$_POST["accueil_fr_titre"]."\", accueil_fr_contenu=\"".$_POST["accueil_fr_contenu"]."\"";
-
Et encore la même:
Requete incorrecte: Erreur de syntaxe pr?s de ''accueil_fr' SET accueil_fr_titre="l'eau", accueil_fr_contenu=" ' ? la ligne 1
:( -
UP
S'il vous plait si quelqu'un a une idée je bloque toujours...