Ajouter de variable avec ' en bdd

Résolu
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. 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
    1. 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
      1. 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
        1. 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
          1. resultat du echo:

            INSERT INTO tableTest (name) VALUES ('L\'eclerc')
            0
            1. essayes de faire un echo "INSERT INTO tableTest (name) VALUES ('".$nom."')";
              pour voir ce que ca essaye d'envoyer
              0
              1. 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
                1. 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