Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1536 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [MySQL] Erreur de syntaxe que je ne comprend pas ! (aléatoire en plus)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[MySQL] Erreur de syntaxe que je ne comprend pas ! (aléatoire en plus)

n°572874
rainckill
Posté le 21-11-2003 à 20:53:37  profilanswer
 

Code :
  1. Erreur SQL !INSERT INTO sys_news (id,titre,auteur,contenu,date) values ('','ah mais ca marche ??','kaos','Faudrait savoir !!
  2. 3 fois d'affilé que ca marche la....','21/11/2003')
  3. 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 'affilé que ca marche la....','21/11/2003')' at line 1


 
Voila l'erreur que je rencontre... de temps en temps ! J'ai mis au point un systeme de news, et de temps en temps il me dit 'news postée avec succes', et defois je rencontre cette erreur, je ne comprend pas cet état aléatoire ! D'autant plus que le spages de codes marchent bien car une copie sert depuis plus d'un an sur un autre site sans pb !
 
Quelqu'un aurait t'il une idée ? Pour info, je le met quand, meme, voila le code de news_post.php :
 

Code :
  1. <?
  2. require("config.php" );
  3. $date=date("d/m/Y" );
  4. $contenu = nl2br($contenu);
  5. $insert = "INSERT INTO sys_news (id,titre,auteur,contenu,date) values ('','$titre','$auteur','$contenu','$date')";
  6. mysql_query($insert) or die('Erreur SQL !'.$insert.'<br>'.mysql_error());
  7. echo "
  8. News postée avec succès... <br><br>
  9. <center><a href='adminsite.php'>Administration</a> &nbsp;&nbsp; <a href='index.php'>Home du site</a></center></font>";
  10. mysql_close();
  11. ?>

mood
Publicité
Posté le 21-11-2003 à 20:53:37  profilanswer
 

n°572876
JWhy
je peux plier (héhé)
Posté le 21-11-2003 à 20:58:01  profilanswer
 

ca te donne une erreur quand tu essayes d'ajouter une news avec des apostrophes (genre "3 fois d'affilé" ) ?
ca te donne une erreur quand tu essayes d'ajouter une news ne contenant pas d'apostrophe ?
 
si la reponse est "oui" et "non", jette un oeil sur http://www.php.net/fr/addslashes
 


---------------
www.alliancefrancophone.org ... Home is where the heart is
n°572877
rainckill
Posté le 21-11-2003 à 20:58:04  profilanswer
 

Ah ! Je viens de voir que ce n'est pas si aléatoire ! enfait, c'est a partir du moment ou il y a un apostrophe ' dans un des champs que ca merde !

n°572878
rainckill
Posté le 21-11-2003 à 20:58:42  profilanswer
 

grilled ^^
 
merci pour le liens, jvé jeter un oeil

n°572881
mrbebert
Posté le 21-11-2003 à 21:02:35  profilanswer
 

Chaque fois que l'on utilise une chaîne de caractère dans une requête, il faut la protéger avec addslashes(). Toujours :)


Message édité par mrbebert le 21-11-2003 à 21:02:41
n°572882
rainckill
Posté le 21-11-2003 à 21:06:45  profilanswer
 

Je comprend pas...
 
Encoire un phénomene aléatoire !
J'ai rajouter o code de news_post.php cette ligne :
$contenu = addslashes($contenu);
 
Premeir test avec ' : Ca amrche, new spostée avec succès, mais le ' a disparu de la news !
 
Autres tests : La meme erreur ! non stop !

n°572890
rainckill
Posté le 21-11-2003 à 21:13:46  profilanswer
 

ah non c bon ! dsl, pb de serveur enfait ! Tout ets rentré dans l'ordre merci a vous pour cette focntion primordiale :)
 
(je me demande quand meme pq j'avais aps ce probleme sur un autre serveur alors que j'entré des ' et des " dans els champs ! enfin bon ^^)

n°572925
JWhy
je peux plier (héhé)
Posté le 21-11-2003 à 22:09:49  profilanswer
 


pas de beaucoup en plus ;)
 
 
 
Il est possible que l'autre serveur soit configuré avec les "magic quotes" activées (cf http://www.php.net/manual/fr/ref.i [...] quotes-gpc )


---------------
www.alliancefrancophone.org ... Home is where the heart is
n°575179
rainckill
Posté le 24-11-2003 à 21:58:12  profilanswer
 

Oui c'est ce que je me disais...
 
Sinon une deriere question, si j'instaure la ligne $contenu2 = addslashes($contenu); j'ai l'impression que la ligne du dessus : $contenu2 = nl2br($contenu); qui 'est plus pris en compte... Est ce normal ?  

n°575192
JWhy
je peux plier (héhé)
Posté le 24-11-2003 à 22:21:34  profilanswer
 

si tu as:

Code :
  1. 1:  $contenu2 = nl2br($contenu);
  2. 2:  $contenu2 = addslashes($contenu);


oui c'est normal : la ligne 1 ne sert a rien puisque de toute facon dans la ligne 2, le contenu de $contenu2 sera écrasé par  $contenu addslashé
 
tu peux faire

Code :
  1. 1:  $contenu2 = nl2br($contenu);
  2. 2:  $contenu2 = addslashes($contenu2);


 
ou bien  directement

Code :
  1. 1:  $contenu2 = nl2br(addslashes($contenu));


 


---------------
www.alliancefrancophone.org ... Home is where the heart is
mood
Publicité
Posté le 24-11-2003 à 22:21:34  profilanswer
 

n°575279
MagicBuzz
Posté le 24-11-2003 à 23:58:36  profilanswer
 

mrBebert a écrit :

Chaque fois que l'on utilise une chaîne de caractère dans une requête, il faut la protéger avec addslashes(). Toujours :)


ou alors faire ça proprament en utilisant des paramètres.
 
en C# ça donne ça par exemple :
 


sql = "select news_id from news where title = @title";
cmd = cnx.CreateCommand();
cmd.CommandType = System.Data.CommandType.Text;
cmd.CommandText = sql;
param = cmd.CreateParameter();
param.ParameterName = "@title";
param.SqlDbType = System.Data.SqlDbType.Varchar;
param.Direction = System.Data.ParameterDirection.Input;
param.Value = title;
cmd.Parameters.Add(param);
rs = cmd.ExecuteReader(System.Data.CommandBehavior.Default);


 
Il y a l'équivalent en PHP (ou alors y'a vraiment un problème)
 
Niveau performance, c'est du simple au centuple. (le SGBD conserve la requête en mémoire d'une fois à l'autre, elle se comporte alors comme une procédure stockée)


Message édité par MagicBuzz le 24-11-2003 à 23:59:38

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [MySQL] Erreur de syntaxe que je ne comprend pas ! (aléatoire en plus)

 

Sujets relatifs
[noob][mysql] ou trouver les info pour peupler ma basemysql et phpmyadmin
J'ai encore buggé !! ... en MySQL cette fois ! :)MySql et les float
[php/mysql] Tester une chaine different de vide[MYSQL] Case sensitive ?
lien d'1 page a une autre en php avec récupérations de donnés mysql[MySQL] Executer plusieurs requètes avec OleDB
[MySQL] pb de connection serverutilisation de mediumblob from mysql avec le langage php ...
Plus de sujets relatifs à : [MySQL] Erreur de syntaxe que je ne comprend pas ! (aléatoire en plus)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR