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

Langage PHP Discussion :

problème d'insertion s'il y a des quotes!


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 209
    Points : 68
    Points
    68
    Par défaut problème d'insertion s'il y a des quotes!
    Bonjour,
    Dans mon script php,au moment d'insertion dans la base de données,j'ai le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //...............
    	$cartes = new SimpleXMLElement($xmlstr);
     
    	$txt = (String)$cartes->Carte->asXML();
    $req_u = "INSERT INTO dtinv_log_agent VALUES (DEFAULT,DEFAULT,NOW(),$freq,$dispo,'$txt')";
    j'ai vu sur internet,que le fait d'insérer '$txt' sous cette forme engendre des problèmes si dans cette chaine pourra avoir des quotes ,donc s'il y a une méthode en php avec des fonctions comme 'escape_string ou autres? merci d'avance

  2. #2
    Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 209
    Points : 68
    Points
    68
    Par défaut
    J'ai essayé avec mysqli_escape_string(), mais il me renvoit erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req_u = "INSERT INTO dtinv_log_agent VALUES (DEFAULT,DEFAULT,NOW(),$freq,$dispo,mysqli_escape_string($txt))";

  3. #3
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 452
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 452
    Points : 4 601
    Points
    4 601
    Par défaut
    je ne sais pas trop si ca peut aider, mais si tu concatene tes variable ?
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $req_u = "INSERT INTO dtinv_log_agent VALUES (DEFAULT,DEFAULT,NOW(),".$freq.",".$dispo.",'".mysqli_escape_string($txt)."')";
    sinon, que contient ton $txt (var_dump())
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  4. #4
    Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 209
    Points : 68
    Points
    68
    Par défaut
    Citation Envoyé par Doksuri Voir le message
    je ne sais pas trop si ca peut aider, mais si tu concatene tes variable ?
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $req_u = "INSERT INTO dtinv_log_agent VALUES (DEFAULT,DEFAULT,NOW(),".$freq.",".$dispo.",'".mysqli_escape_string($txt)."')";
    sinon, que contient ton $txt (var_dump())
    merci, j'ai testé ton code mais il enregistre une chaine vide !

  5. #5
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 452
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 452
    Points : 4 601
    Points
    4 601
    Par défaut
    et que contient ton $txt
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  6. #6
    ovh
    ovh est déconnecté
    Rédacteur
    Avatar de ovh
    Homme Profil pro
    Architecte devops web full stack
    Inscrit en
    Mai 2002
    Messages
    3 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte devops web full stack

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 841
    Points : 6 514
    Points
    6 514
    Par défaut
    Je ne saurais trop te conseiller d'utiliser les requêtes préparées, de préférence avec PDO, le moyen moderne de se connecter aux bases de données :
    http://fmaz.developpez.com/tutoriels...endre-pdo/#LII

    Tutoriels sur les UPS, e-commerce, PHP, critiques de livres...

    Pensez à consulter les FAQs et les cours et tutoriels.
    FAQ Linux - Cours et tutoriels Linux - FAQ PHP - Cours et tutoriels PHP
    Ce forum est fait pour vous et surtout par vous, merci d'en respecter les règles.

    Je n'ai rien à voir avec la société www.ovh.com !

  7. #7
    Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 209
    Points : 68
    Points
    68
    Par défaut
    Citation Envoyé par Doksuri Voir le message
    et que contient ton $txt
    la variable $text contient une chaine telle que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    "<Carte>
      <Nbr_adaptateurs>2</Nbr_adaptateurs>
      <Api_in_use>0</Api_in_use>
      <Stat_Ip>4119</Stat_Ip>
      <Type_carte>DTA-115 (#1)</Type_carte>
      <Frequence>578.00 MHz</Frequence>
      <Taux_flux_transport>-858993460 bps</Taux_flux_transport>
      <Adresse_IP>204.204.204.204:52428</Adresse_IP>
      <Protocole>UDP</Protocole>
    </Carte>"

  8. #8
    Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 209
    Points : 68
    Points
    68
    Par défaut
    Citation Envoyé par ovh Voir le message
    Je ne saurais trop te conseiller d'utiliser les requêtes préparées, de préférence avec PDO, le moyen moderne de se connecter aux bases de données :
    http://fmaz.developpez.com/tutoriels...endre-pdo/#LII
    j'ai lu le tuto mais je n'ai pas compris grande chose sur PDO et comment l'utiliser dans mon cas !

  9. #9
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 452
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 452
    Points : 4 601
    Points
    4 601
    Par défaut
    et si tu fais un echo $req_u; de ta requete generee
    => puis que tu la copie/colle directement dans phpmyadmin... il te dit quoi ?

    ps : je pense que ca pourrait venir du # (pour mysql, ca signifie un commentaire.. il se pourrait que le reste de la requte ne soit pas "lu")
    => mais en meme temps, mysqli_escape_string.. donc theoriquement c'est bon
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  10. #10
    Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 209
    Points : 68
    Points
    68
    Par défaut
    avec le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $req_u = "INSERT INTO dtinv_log_agent VALUES (DEFAULT,DEFAULT,NOW(),".$freq.",".$inUse.",'".mysqli_escape_string($txt)."')";
    		echo $req_u;
    il affiche rien,il retourne un avertissement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PHP Warning:  mysqli_escape_string() expects exactly 2 parameters, 1 given in /var/www/dtinv/script_agent.php on line 80
    INSERT INTO dtinv_log_agent VALUES (DEFAULT,DEFAULT,NOW(),578,0,'')Données Insérées avec succès
    et il enregistre chaine vide
    mais avec le code que j'avais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req_u = "INSERT INTO dtinv_log_agent VALUES (DEFAULT,DEFAULT,NOW(),$freq,$inUse,'$txt')";
    il marche sans problème

  11. #11
    Membre éprouvé
    Homme Profil pro
    Touche à tout informatique autodidacte
    Inscrit en
    Janvier 2007
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Touche à tout informatique autodidacte

    Informations forums :
    Inscription : Janvier 2007
    Messages : 808
    Points : 912
    Points
    912
    Par défaut
    Bonjour,
    Pour ta dernière erreur:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");
    $req_u = "INSERT INTO dtinv_log_agent VALUES (DEFAULT,DEFAULT,NOW(),".$freq.",".$inUse.",'".mysqli_escape_string($link,$txt)."')";
    ?>

    la fonction mysqli_escape_string nécessite deux paramètres:
    le premier : Un identifiant de lien retourné par la fonction mysqli_connect() ou par la fonction mysqli_init()
    le deuxième : La chaîne de caractères à échapper.

  12. #12
    Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 209
    Points : 68
    Points
    68
    Par défaut
    J'ai rajouté mysqli_connect(),mais y a toujours le warning
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PHP Warning:  mysqli_escape_string() expects parameter 1 to be mysqli, resource given in /var/www/dtinv/script_agent.php on line 80

  13. #13
    Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 209
    Points : 68
    Points
    68
    Par défaut
    C'est bon ,il y avait conflis entre mysql et mysqli ,parceque j'avais la connexion ouverte avec mysql_pconnect(),donc il fallait aussi utiliser mysql_escape_string et non pas mysqli_escape_string. et par contre mysql_escape_string prend seulement un paramètre
    Merci à tous

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/04/2011, 16h50
  2. problème d'insertion dans des tables ?
    Par Invité dans le forum Oracle
    Réponses: 7
    Dernier message: 05/08/2009, 12h29
  3. [MySQL] Problème d'insertion des donne récupère ds la BDD
    Par makaphrodite dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 30/12/2006, 12h46
  4. [MySQL] Problème à l'insertion des données en BDD
    Par carelha dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/11/2006, 14h31
  5. [VB6]problème d'insertion des donneés dans une base d'Access2003
    Par lanbok dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 27/05/2006, 12h17

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