Probéme apostrophe php urgent
Fermé
alen74
Messages postés
2
Date d'inscription
jeudi 27 novembre 2008
Statut
Membre
Dernière intervention
12 décembre 2008
-
1 déc. 2008 à 13:07
ptimushu Messages postés 28 Date d'inscription lundi 9 avril 2007 Statut Membre Dernière intervention 19 mars 2010 - 18 févr. 2009 à 23:52
ptimushu Messages postés 28 Date d'inscription lundi 9 avril 2007 Statut Membre Dernière intervention 19 mars 2010 - 18 févr. 2009 à 23:52
A voir également:
- Probéme apostrophe php urgent
- Easy php - Télécharger - Divers Web & Internet
- Double apostrophe clavier ✓ - Forum Perl
- Bouton php - Forum PHP
- Espace après apostrophe word ✓ - Forum Word
- Php?id=1 - Forum PHP
2 réponses
Bonjour
il faut TOUJOURS échapper les données non numériques avec mysql_real_escape_string pour les enregistrer dans une base de données mysql
pas besoin de str_replace ni de addslashes
...VALUES
('NULL',
'".mysql_real_escape_string($codice)."',
'".mysql_real_escape_string($HTTP_POST_VARS['name'])."',
'".mysql_real_escape_string($HTTP_POST_VARS['emai'l])."',
'".mysql_real_escape_string($HTTP_POST_VARS['message'])."',
'".mysql_real_escape_string($HTTP_POST_VARS['immagine'])."',
NOW())
";
Normalement, la variable pour récupérer les champs d'un formulaire est $_POST. $HTTP_POST_VARS est obsolète depuis la V4.1.0 de php.
Enfin, il ne faut pas oublier les apostrophes autour des indices non numériques de tableaux : $HTTP_POST_VARS['immagine'] et non pas $HTTP_POST_VARS[immagine]. Ça marche uniquement parce que ton serveur cache les messages d'erreur. Ça marcherait aussi si tu utilisais ta variable entre " " mais ce n'est pas le cas ici.
il faut TOUJOURS échapper les données non numériques avec mysql_real_escape_string pour les enregistrer dans une base de données mysql
pas besoin de str_replace ni de addslashes
...VALUES
('NULL',
'".mysql_real_escape_string($codice)."',
'".mysql_real_escape_string($HTTP_POST_VARS['name'])."',
'".mysql_real_escape_string($HTTP_POST_VARS['emai'l])."',
'".mysql_real_escape_string($HTTP_POST_VARS['message'])."',
'".mysql_real_escape_string($HTTP_POST_VARS['immagine'])."',
NOW())
";
Normalement, la variable pour récupérer les champs d'un formulaire est $_POST. $HTTP_POST_VARS est obsolète depuis la V4.1.0 de php.
Enfin, il ne faut pas oublier les apostrophes autour des indices non numériques de tableaux : $HTTP_POST_VARS['immagine'] et non pas $HTTP_POST_VARS[immagine]. Ça marche uniquement parce que ton serveur cache les messages d'erreur. Ça marcherait aussi si tu utilisais ta variable entre " " mais ce n'est pas le cas ici.
ptimushu
Messages postés
28
Date d'inscription
lundi 9 avril 2007
Statut
Membre
Dernière intervention
19 mars 2010
18 févr. 2009 à 23:52
18 févr. 2009 à 23:52
Bonjour,
C'est la premiere fois que ça m'arrive.
j'ai la requete suivante :
sql="UPDATE joueur
SET
clan='".addslashes($_POST["nom"])."'
WHERE pseudo ='".$s->pseudo."'
";
Donc tout se met bien a jour dans la table joueur.
Mais quand dans une autre page je demande d'afficher la valeur de clan, mySQL me dit qu'il y a une erreur de syntaxe quand $_POST["nom"] contient un apostrophe. Ici $_POST["nom"]=L'élite
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 'élite'' at line 1
Sans addslashes ou avec stripslashes c'est le même probleme...
Donc le probleme ce n'est pas lors de l'insertion dans la BDD ou lors d'une mise a jour, c'est lorsque je demande l'affichage de clan
Je ne comprends pas d'où ça peut venir car j'ai une autre table avec exactement les mêmes criteres mais je n'ai pas de probleme.
Si quelqu'un est en mesure de m'aider.
Merci
C'est la premiere fois que ça m'arrive.
j'ai la requete suivante :
sql="UPDATE joueur
SET
clan='".addslashes($_POST["nom"])."'
WHERE pseudo ='".$s->pseudo."'
";
Donc tout se met bien a jour dans la table joueur.
Mais quand dans une autre page je demande d'afficher la valeur de clan, mySQL me dit qu'il y a une erreur de syntaxe quand $_POST["nom"] contient un apostrophe. Ici $_POST["nom"]=L'élite
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 'élite'' at line 1
Sans addslashes ou avec stripslashes c'est le même probleme...
Donc le probleme ce n'est pas lors de l'insertion dans la BDD ou lors d'une mise a jour, c'est lorsque je demande l'affichage de clan
Je ne comprends pas d'où ça peut venir car j'ai une autre table avec exactement les mêmes criteres mais je n'ai pas de probleme.
Si quelqu'un est en mesure de m'aider.
Merci
1 déc. 2008 à 22:17