Ajouter de variable avec ' en bdd [Résolu/Fermé]

Signaler
-
 john -
Bonjour,

Je voudrais pouvoir stocker dans ma base de donnée des noms contenant parfois des apostrophes j'ai donc ajouter :

$nom = addslashes($_POST['Nom']);
mssql_query ("INSERT INTO tableTest (name) VALUES ('".$nom."')");

Seulement ça me mets les mêmes erreurs que sans le addslashes...

merci,

8 réponses

Messages postés
817
Date d'inscription
samedi 21 juin 2008
Statut
Membre
Dernière intervention
17 juillet 2012
172
Seulement ça me mets les mêmes erreurs que sans le addslashes...
Et c'est quoi les erreurs ?

et essayes de remplacer ta ligne par :

mssql_query ("INSERT INTO tableTest (name) VALUES ('".$nom."')") or die(mssql_error());
si ca trouve une erreur dans ta requête, ca te le dira
Si je mets L'eclerc ça me met ça, par contre sans apostrophe cela fonctionne:

Warning: mssql_query() [function.mssql-query.html]: message: Syntaxe incorrecte vers 'eclerc'.

Warning: mssql_query() [function.mssql-query.html]: message: Ouvrez les guillemets après la chaîne de caractères ')'.

Si je fais un echo du addslashes j'ai bien: L\'eclerc

Merci
Messages postés
817
Date d'inscription
samedi 21 juin 2008
Statut
Membre
Dernière intervention
17 juillet 2012
172
essayes de faire un echo "INSERT INTO tableTest (name) VALUES ('".$nom."')";
pour voir ce que ca essaye d'envoyer
resultat du echo:

INSERT INTO tableTest (name) VALUES ('L\'eclerc')
Messages postés
817
Date d'inscription
samedi 21 juin 2008
Statut
Membre
Dernière intervention
17 juillet 2012
172
Bizarre chez moi en faisant ca ça marche :O
Enfin c'est un serveur MYSQL et pas MSSQL, ceci explique cela, mais ca n'explique pas où est l'erreur ^^
Messages postés
437
Date d'inscription
mercredi 29 juillet 2009
Statut
Membre
Dernière intervention
23 septembre 2010
74
Si c'est pour afficher en html après tu peux toujours remplacer les apostrophes de tes string par '
C'est ce que j'ai fait sur un site et ça marche bien.
Messages postés
817
Date d'inscription
samedi 21 juin 2008
Statut
Membre
Dernière intervention
17 juillet 2012
172
Après une courte recherche, il s'avère que pour mssql, il faut "double-apostropher"

To insert an apostrophe into the database using SQL you need to "double-up" the apostrophes
J'ai contourné le problème en bidouillant mais je t'avouerais ne pas trop comprendre pourquoi ça marche. Je met ce que j'ai fais si ça peut servir à d'autres:

Remplacer le ' par deux apostrophes.
$nom = str_replace("'","''",$_POST['Nom']);

Ce qui est bizarre c'est que le echo me met: VALUES ('L''eclerc') alors que dans ma bdd un seul apostrophe est présent.

Enfin merci de ton aide.
Bonne journée!