Formulaire PHP (les apostrophes)

Bonjour,
Ayant créer un formulaire pour rentré des personnes dans une BDD, je rencontre une difficulté, j'ai parcouru divers forum et n'ai trouvé de vraiment utile, quand je rentre mes données dans les champs de saisies sans apostrophes tout ce passe bien, une fois qu'il y a un champ adresse avec "23 rue de l'alabama", la requete ne s'éxécute pas, y a t il un moyen de passer outre ce problème ? j'ai vu sur des forums le addslahes mais je n'ai compris

4 réponses

  1. avant de rentrer les valeurs dans la bdd, passes par la fonction mysql_real_escape_string

    ex: $adresse=mysql_real_escape_string($_POST['adresse']);

    ça échappe les ' entre autre

    par contre après pour afficher il faut appliquer stripslashes($adresse)
    1. Bonjour

      par contre après pour afficher il faut appliquer stripslashes($adresse)
      Absolument pas. Si tu as besoin de le faire, c'est que tu avais déjà des slashes en trop avant d'insérer tes données dans la base, ça ne vient pas de mysql_real_escape_string
  2. décidément le père tu y tiens:

    mysql_real_escape_string() protège une commande SQL de la chaîne unescaped_string, en "échappant" les caractères spéciaux tout en prenant en compte le jeu de caractères courant de la connexion link_identifier. Le résultat peut être utilisé sans problème avec la fonction mysql_query(). Si des données binaires doivent être insérées, cette fonction doit être utilisée.

    mysql_real_escape_string() appelle la fonction mysql_escape_string() de la bibliothèque MySQL qui ajoute un anti-slash aux caractères suivants : NULL, \x00, \n, \r, \, ', " et \x1a.


    donc si la valeur avant est l'alabama la fct transforme en l\'alabama
    1. mea culpa

      je viens de faire un petit script de test, effectivement bien que la lecture du descriptif de cette fonction ne le précise pas

      ce qui est effectivement enregistré dans la BDD est sans \

      donc cela depend de magic_cote_gpc

      milles excuses !!
      1. Pas de problème ^^
        Note qu'il est normal que ces backslashes ne se retrouvent pas enregistrés dans la base, il n'ont rien à y faire. Comme tous les caractères d'échappement, il servent juste à éviter que les caractères spéciaux jouent leur fonctions spéciales. Mais ils ne font pas partie des données.