IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Utilisation des apostrophes [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 86
    Par défaut Utilisation des apostrophes
    Bonjour,

    Voici mon souci:
    L'utilisateur saisit dans un textarea des données pour qu'elles soient entrées dans ma base... Or lorsqu'il saisit une apostrophe, les données enregistrées dans la base s'arrête à cette apostrophe. Ce qui est saisit dans le textarea et bien sur tout d'abord stocké dans une variable...
    J'ai essayé d'utiliser la fonction addslashes() mais rien y fait...
    Voici ma requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql_ins_rec = "INSERT INTO record(data1,data2) VALUES('$data1','$data2')";
    et donc si on saisit: test's test
    seul test\ est enregistré...
    Par contre si j'utilise une requête de modification avec UPDATE, çà fonctionne... J'ai bien test's test d'enregistré...

    Quelqu'un a une solution?

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 86
    Par défaut
    Est-ce que mon problème ne vient pas de "magic_quotes_gpc" qui est sur off?

  3. #3
    Membre Expert
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Par défaut
    Salut, tu as essayé d'afficher ta requête pour voir si elle était correcte ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 86
    Par défaut
    Oui, je l'ai fais... et à part le fait que j'ai 'test\\' pour data1 (par exemple), elle est correcte il me semble...

  5. #5
    Membre éclairé Avatar de J0r_x
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2006
    Messages : 804
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql_ins_rec = 'INSERT INTO record(data1,data2) VALUES("$data1","$data2")
    Je ne pense pas que l'utilisateur écrira des " :p

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 86
    Par défaut
    j'ai tenté les " mais ma requete ne fonctionne plus du tout dans ce cas

  7. #7
    Membre éclairé Avatar de J0r_x
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2006
    Messages : 804
    Par défaut
    C'est moi je fais des erreurs.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql_ins_rec = 'INSERT INTO record(data1,data2) VALUES("'.$data1.'","'.$data2.'")'

  8. #8
    Membre chevronné Avatar de sohnic
    Femme Profil pro
    bioinfo
    Inscrit en
    Mai 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : bioinfo

    Informations forums :
    Inscription : Mai 2003
    Messages : 426
    Par défaut
    Bonjour,
    C'est curieux que le addslashes fonctionne pour l'update et non pour l'insert.
    Es-tu sur de l'avoir placé au bon endroit ? Pas de faute de frappe ?
    Ex.: $datata1=addslashes($data1);
    Puis tu fais un insert avec $data1 et non $datata1

    Une idée en passant....
    Sohnic

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 86
    Par défaut
    je trouve çà aussi curieux et j'ai bien sûr vérifié les syntaxes avant de "poster"

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 86
    Par défaut
    J'ai essayé ta solution J0r_x... et j'obtiens le même résultat
    cad: test\ au lieu de test's test

  11. #11
    Membre chevronné Avatar de sohnic
    Femme Profil pro
    bioinfo
    Inscrit en
    Mai 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : bioinfo

    Informations forums :
    Inscription : Mai 2003
    Messages : 426
    Par défaut
    Bonjour,
    Je n'ai aucune explication concernant ton problème...
    As-tu essayé avec mysql-real-escape-string plutot que addslashes ?
    (http://www.php.net/manual/en/functio...ape-string.php)

    Peut-etre une porte de sortie...

    S.

  12. #12
    Membre expérimenté
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2006
    Messages : 215
    Par défaut
    Salut

    moi pour évité de m'embrouiller dans mes requettes avec les "" et ''

    j'utilise cette forme :

    http://pastebin.funraill.org/0b37792...42a77f8d32bda/

    si ca peux servire d'astuce à certain ( :

    sahid

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 86
    Par défaut
    Alors j'ai testé ce que tu me propose sohnic...
    J'ai utilsé cette fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    // Protège la variable
    function quote_smart($value)
    {
       // Stripslashes
       if (get_magic_quotes_gpc()) {
         $value = stripslashes($value);
       }
       // Protection si ce n'est pas une valeur numérique ou une chaîne numérique
       if (!is_numeric($value)) {
         $value = "'" . mysql_real_escape_string($value) . "'";
       }
       return $value;
    }
    et j' ai fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $data1 = quote_smart($_POST['data1']);
    $data2 = quote_smart($_POST['data2']);
    juste avant ma requete INSERT... Et cette fois en rentrant test's test pour data1 et 2, j'obtiens comme résultats enregistrés dans la base juste ' (le quote)...

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 86
    Par défaut
    J'ai également testé ta solution Sahid:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
            $sql = <<<SQL
            insert into record (data1, data2) values ("{$data1}", "{$data2}");
    SQL;
    Et ma page ne se charge meme pas... Meme si j'enlève le ";" avant "SQL;"

  15. #15
    Membre chevronné Avatar de sohnic
    Femme Profil pro
    bioinfo
    Inscrit en
    Mai 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : bioinfo

    Informations forums :
    Inscription : Mai 2003
    Messages : 426
    Par défaut
    Je ne comprend pas pourquoi tu rajoutes des apostrophes a ta chaine protégée. Du coup, tu te retrouves à nouveau avec des apostrophes non escapés...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if (!is_numeric($value)) {
         $value = mysql_real_escape_string($value);
       }
    Ensuite avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql_ins_rec = "INSERT INTO record(data1,data2) VALUES('$data1','$data2')";
    tu devrais t'en sortir....

    S.

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 86
    Par défaut
    Tu as raison sohnic
    J'ai donc fait ce que tu m'as conseillé
    Et j'obtiens "test\" comme enregistrement
    J'ai l'impression d'être complètement bloqué là....

  17. #17
    Membre chevronné Avatar de sohnic
    Femme Profil pro
    bioinfo
    Inscrit en
    Mai 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : bioinfo

    Informations forums :
    Inscription : Mai 2003
    Messages : 426
    Par défaut
    Par curiosité, as-tu essayé en commentant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    /*
    if (get_magic_quotes_gpc()) {
         $value = stripslashes($value);
       }
    */
    ...on ne sait jamais.

    S.

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 86
    Par défaut
    alors je viens d'essayer et j'obtiens ceci:
    test\\\
    par contre magic_quotes_gpc est maintenant sur "on"

  19. #19
    Membre chevronné Avatar de sohnic
    Femme Profil pro
    bioinfo
    Inscrit en
    Mai 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : bioinfo

    Informations forums :
    Inscription : Mai 2003
    Messages : 426
    Par défaut
    Je pense que tu as un gag la ou tu ne t'y attends pas.
    Je te conseille de placer des echo de ton $value, dans la fonction et dans le script et à chaque fois que tu fais une opération dessus.
    De meme pour tes requetes sql.

    Si vraiment tu ne t'en sors pas, et si ton code n'est pas trop long, poste le.

    La, je ne vois vraiment pas de solution....

    Sinon, le test que je t'ai demandé de commenter a l'air bon...

    Je ne sais vraiment pas quoi te proposer d'autre !

    Bon courage,

    S.

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 86
    Par défaut
    Merci quand meme pour ton aide sohnic
    J'ai déjà tenté de tout afficher... C'est au moment de l'insert dans ma base que l'erreur se produit...
    Sinon malheureusement mon code en entier est trop long pour que je puisse le poster

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [MySQL] Utilisation des apostrophes
    Par Zarvox dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 24/07/2009, 16h08
  2. [RegEx] Utilisation de la fonction "preg_match_all" avec des apostrophe ou des œ
    Par arnaudperfect dans le forum Langage
    Réponses: 4
    Dernier message: 16/08/2008, 23h05
  3. [MySQL] Utilisation des apostrophes
    Par jc_cornic dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 17/01/2007, 20h50
  4. [MySQL] Utilisation des apostrophes
    Par philippef dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 13/01/2007, 01h30
  5. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo