Probleme apostrophre mysql_real_escape_string

Résolu
payetonju Messages postés 436 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 2 juillet 2014 - 3 janv. 2011 à 14:52
payetonju Messages postés 436 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 2 juillet 2014 - 4 janv. 2011 à 13:10
Bonjour,

J'ai un formulaire de contact en PHP, qui enregistre dont le commentaire de l'utilisateur. Or la requete SQL foire quand on y ajoute des apostrophes. Au niveau de l' "INSERT INTO" j'ai fait un mysql_real_escape_string, qui d'habitude marche, sauf là, évidemment ! (je travaille avec les pilotes ODBC)
Voici mon code :
$Commentaires = trim( nl2br( $_POST['commentaires'] ) );
ConnexionBase( $connect );
$SQL = "INSERT INTO formail(societe,nom,prenom,telephone,email,commentaires,date,civilite,secteur,fonction,adresse,ville,codepostal,fax,lu) values ";
$SQL.= "('".$Societe."','".$Nom."','".$Prenom."','".$Tel."','".$Email."','".$Commentaires."','".$Date."','','','','','','','','0')";
$res = odbc_exec($connect, $SQL);
echo $SQL;
DeconnexionBase( $connect );


ça bug également quand je mets :
$Commentaires = mysql_real_escape_string( trim( nl2br( $_POST['commentaires'] ) ) );


SVP aidez-moi :)
Merci d'avance.
Ju'

7 réponses

faiblard Messages postés 337 Date d'inscription samedi 3 février 2007 Statut Membre Dernière intervention 4 janvier 2011
3 janv. 2011 à 18:58
Je dirais que c'est ta colonne date !

Date est un mot réservé... Renomme ta colonne (dateCommentaire? dateNaissance?)

Sinon tu fais
$SQL = "INSERT INTO formail(societe,nom,prenom,telephone,email,commentaires,`date`,civilite,secteur,fonction,adresse,ville,codepostal,fax,lu) values ";
$SQL.= "('".$Societe."','".$Nom."','".$Prenom."','".$Tel."','".$Email."','".$Commentaires."','".$Date."','','','','','','','','0')";

(avec des apostrophe renversé autour de date, ca peut marcher suivant le SGBD....)

La meilleur solutions restant de ne pas nommer t'es champs avec des mots réservé par SQL...
-------------------------------------------------------------------
La recherche est ton amie ! Promis elle ne te mordra pas...
Enjoy
N'oubliez pas d'accepter pour aidez les autres quand ils cherchent !
3
payetonju Messages postés 436 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 2 juillet 2014 4
4 janv. 2011 à 09:10
Bonjour et merci, non ce n'est pas ça le soucis apparemment.

Mais dans la requete, a la palce de mysql_real_escape_string( $Commentaire ) j'ai fait str_replace("'","''",$Commentaire) et ça fonctionne. Je ne sais pas trop pourquoi l'une fonctionne et pas l'autre mais bon...
Au moins mon soucis est reglé. Il ne me reste juste à comprendre pourquoi.

Merci, au moins j'ai appris un truc, je ne savais pas que DATE était un mot réservé :)

Bonne journée
3
faiblard Messages postés 337 Date d'inscription samedi 3 février 2007 Statut Membre Dernière intervention 4 janvier 2011
4 janv. 2011 à 09:31
Je te conseillerai d'utiliser la fonction addslashes plutôt que ton str_replace()

-------------------------------------------------------------------
La recherche est ton amie ! Promis elle ne te mordra pas...
Enjoy
N'oubliez pas d'accepter pour aidez les autres quand ils cherchent !
3
faiblard Messages postés 337 Date d'inscription samedi 3 février 2007 Statut Membre Dernière intervention 4 janvier 2011
3 janv. 2011 à 15:44
Bonjour,

Si tu mettais l'erreur affichée (php ou sql) cela te permettrais sûrement une réponse plus rapide.

-------------------------------------------------------------------
La recherche est ton amie ! Promis elle ne te mordra pas...
Enjoy
N'oubliez pas d'accepter pour aidez les autres quand ils cherchent !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
payetonju Messages postés 436 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 2 juillet 2014 4
3 janv. 2011 à 15:54
Bonjour, oui pardon :

Warning: odbc_exec() [function.odbc-exec]: SQL error: [Microsoft][ODBC SQL Server Driver][SQL Server]Syntaxe incorrecte vers 'erff'., SQL state 37000 in SQLExecDirect in C:\Programmes\wampserver2.0c\www\html\contact.php on line 52

voici mon erreur

"erff" est la partie de mon test apres l'apostrophe que j'ai mise dans le commentaire envoyé
0
faiblard Messages postés 337 Date d'inscription samedi 3 février 2007 Statut Membre Dernière intervention 4 janvier 2011
4 janv. 2011 à 09:29
Bonjour,

Quel est ton SGBD? (acces, msSql? mysql?)
-------------------------------------------------------------------
La recherche est ton amie ! Promis elle ne te mordra pas...
Enjoy
N'oubliez pas d'accepter pour aidez les autres quand ils cherchent !
0
payetonju Messages postés 436 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 2 juillet 2014 4
4 janv. 2011 à 13:10
Ha oui pas faut ! :)
J'utilise MySQL
0
Rejoignez-nous