Ajouter de variable avec ' en bdd

Résolu
john -  
 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

  1. jeangilles Messages postés 816 Date d'inscription   Statut Membre Dernière intervention   186
     
    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
    0
  2. john
     
    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
    0
  3. jeangilles Messages postés 816 Date d'inscription   Statut Membre Dernière intervention   186
     
    essayes de faire un echo "INSERT INTO tableTest (name) VALUES ('".$nom."')";
    pour voir ce que ca essaye d'envoyer
    0
  4. john
     
    resultat du echo:

    INSERT INTO tableTest (name) VALUES ('L\'eclerc')
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jeangilles Messages postés 816 Date d'inscription   Statut Membre Dernière intervention   186
     
    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 ^^
    0
  7. M@dien Messages postés 439 Date d'inscription   Statut Membre Dernière intervention   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.
    0
  8. jeangilles Messages postés 816 Date d'inscription   Statut Membre Dernière intervention   186
     
    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
    0
  9. john
     
    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!
    0