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!
    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
      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.
        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 ^^
          1. resultat du echo:

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