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 de backslashes dans la base de données


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 50
    Par défaut Utilisation de backslashes dans la base de données
    bonjour,

    j'aimerai inserer dans une bdd la valeur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $summary_polyline = 'aaa1\bbb2\\ccc3\\\d';
    .

    le problème, c'est que j'ai une modification du nombre de \

    même en ajoutant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $summary_polyline = 'aaa1\bbb2\\ccc3\\\d';
     
    echo $summary_polyline.'<br />';
    echo addslashes($summary_polyline).'<br />';
    echo stripslashes($summary_polyline).'<br />';
    résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    aaa1\bbb2\ccc3\\d
    aaa1\\bbb2\\ccc3\\\\d
    aaa1bbb2ccc3\d
    j'ai essayé en remplacant par un caractère non utilisé dans l'encodage mais j'ai le même résultat...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $summary_polyline = str_replace('\\', '¨', $summary_polyline);
    même résultat : auriez vous une solution SVP ?
    je suis bloqué depuis plusieurs heures.

    Je vous remercie
    Bonne journée

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 322
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 322
    Billets dans le blog
    17
    Par défaut
    Tu veux ceci en base :

    aaa\bbb\\ccc\\\ddd
    Il faut échapper chaque \ en PHP en le doublant, ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $s = 'aaa\\bbb\\\\ccc\\\\\\ddd';
    Ensuite pour le SQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pdo->exec("insert into t values ({$pdo->quote($s)})");

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 50
    Par défaut
    Merci Seb pour ta réponse,

    je viens d'essayer ta proposition.

    en partant de aaa\bbb\\ccc\\\ddd
    quote ne double pas tous les \ mais seulement certains : aaa\\bbb\\ccc\\\\ddd
    dans la bdd j'ai ceci : aaa\bbb\ccc\\ddd


  4. #4
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 322
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 322
    Billets dans le blog
    17
    Par défaut
    Montre ton code.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 50
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $summary_polyline = 'aaa\bbb\\ccc\\\ddd';
    $summary_polyline = $pdo->quote($summary_polyline);
     
    $sql = 'INSERT INTO parcours (summary_polyline) VALUES ("'.$summary_polyline.'")';
    $pdo->exec($sql);

  6. #6
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 667
    Par défaut
    le souci est que l'antislash est aussi un caractère spécial pour les chaines de caractères php. vous pouvez le voir en affichant le contenu de la variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $summary_polyline = 'aaa\bbb\\ccc\\\ddd';
    echo $summary_polyline;
    // affiche : aaa\bbb\ccc\\ddd
    le code \b ne correspond à rien de spécial donc php va stocker \ et b.
    par contre \\ est le code spécial pour 1 seul antislash d'où le résultat que vous obtenez.
    https://www.php.net/manual/fr/langua....syntax.single

    si vous voulez 1, 2 et ensuite 3 antislash, vous pouvez faire cela par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $summary_polyline = 'aaa\\bbb\\\\ccc\\\\\\ddd';
    echo $summary_polyline;
    // affiche :  aaa\bbb\\ccc\\\ddd

  7. #7
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 322
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 322
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par julienber Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $summary_polyline = 'aaa\bbb\\ccc\\\ddd';
    $summary_polyline = $pdo->quote($summary_polyline);
     
    $sql = 'INSERT INTO parcours (summary_polyline) VALUES ("'.$summary_polyline.'")';
    $pdo->exec($sql);
    1. Comme indiqué et illustré dans mon message initial, il faut doubler les \, ce que tu n'as pas fait

    2. En SQL on délimite une chaîne avec ' (" est une extension MySQL)

    3. PDO::quote() ajoute déjà des ' autour de la chaîne

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. ajoute d'une ligne dans une base de donnes
    Par anisj1m dans le forum JDBC
    Réponses: 5
    Dernier message: 19/03/2007, 19h35
  2. Réponses: 10
    Dernier message: 17/03/2007, 14h05
  3. insérer des élément dans une base de donné
    Par wiss20000 dans le forum JDBC
    Réponses: 5
    Dernier message: 01/03/2007, 14h49
  4. [Conception] inertion d'un fichier dans une base de donne
    Par laminebarasow dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 19/07/2006, 23h13
  5. [c#] [dataadapter] effacer des ranger dans une base de donne
    Par mahboub dans le forum Accès aux données
    Réponses: 4
    Dernier message: 02/12/2005, 01h26

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