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 :

Problème d'apostrophe dans ma base. [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 12
    Par défaut Problème d'apostrophe dans ma base.
    Bonsoir,
    En parcourant le forum j'ai vu que je n'etais pas le seul a avoir ce problème!!!
    Malgrsè tout je n'ai pas réussi a le corriger.
    Voila ce que je fais.
    J'importe un fichier texte dans ma base, hors dans ce fichier texte il peut y avoir des apostrophes.
    Donc cela me provoque une erreur SQL. L'import des données est stopé.

    Voici mon codePHP qui importe mon fichier texte:
    (l'erreur est pour le champ $texte)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    <?php
    /* Connexion bdd */
    mysql_connect('','','');
    mysql_select_db('');
    //On vide la table
    mysql_query("TRUNCATE TABLE tableimport");
    /* On ouvre le fichier à importer en lecture seulement */
         $fp=fopen("import.txt","r");
        while (!feof($fp)) /* Et Hop on importe */
        { /* Tant qu'on n'atteint pas la fin du fichier */ 
     
           $ligne = fgets($fp,4096); /* On lit une ligne */  
     
           /* On récupère les champs séparés par ; dans liste*/
           $liste = explode( ";",$ligne);  
     
           /* On assigne les variables */ 
     
       $id = $liste[0]; 
       $nom = $liste[1]; 
       $prenom = $liste[2];
       $texte = $liste[3]; 
     
           /* Ajouter un nouvel enregistrement dans la table */ 
     
           $query = "INSERT INTO tableimport VALUES('$id','$nom','$prenom','$texte')";
           $result= MYSQL_QUERY($query); 
     
           if(mysql_error())
            { /* Erreur dans la base de donnees, sûrement la table qu'il faut créer */
               print "Erreur dans la base de données : ".mysql_error();
               print "<br>Importation stoppée.";
               exit();
            } 
           else /* Tout va bien */
             print "Base mise a jour<br>";<br />
         }    
         echo "<br>Importation terminée, avec succès."; 
     
      /* Fermeture */ 
         fclose($fp); 
         MYSQL_CLOSE(); 
        ?>

    Que dois-je faire pour eviter cette erreur.

    J'ai tenté de rajouter ceci


    mais sans résultats.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chaine = StringReplace(chaine, "'", "''", TReplaceFlags() << rfReplaceAll);
    Merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Utilise mysql_real_escape_string() sur tes chaines
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 12
    Par défaut
    Merci sabotage pour ta réponse aussi rapide.
    Voila ce que je viens de tester:

    Juste la fin!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    
    
          $query = sprintf("INSERT INTO tableimport VALUES('$id','$nom','$prenom','$texte')",
    
    sql_real_escape_string($texte')); 
    
           $result= MYSQL_QUERY($query);
    Bon bé ça ne fonctionne toujours pas.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    C'est avant de créer la requete qu'il faut le faire.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    ce que veut dire Sabotage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
       $id = mysql_real_escape_string($liste[0]); 
       $nom = mysql_real_escape_string($liste[1]); 
       $prenom = mysql_real_escape_string($liste[2]);
       $texte = mysql_real_escape_string($liste[3]); 
     
           /* Ajouter un nouvel enregistrement dans la table */ 
           $query = "INSERT INTO tableimport VALUES('$id','$nom','$prenom','$texte')";
           $result= mysql_query($query);
    Note : les NOMS des fonctions s'écrivent en minuscules : mysql_query($query)

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 12
    Par défaut
    Ha ben oui effectivement cela fonctionne beaucoup mieux!!!
    Un grand merci a vous deux.

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

Discussions similaires

  1. [QtSql] Petit problème d'apostrophe dans une base de donnée
    Par Jiyuu dans le forum PyQt
    Réponses: 1
    Dernier message: 22/09/2011, 07h16
  2. problème de recherche dans une base de donnée mysql
    Par Xini28 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 24/10/2005, 18h00
  3. [Hibernate] problème d'insertion dans la base de données
    Par Willy7901 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 18/08/2005, 13h19
  4. problème de recherche dans une base de données
    Par bouzid_mehdi dans le forum Bases de données
    Réponses: 2
    Dernier message: 19/07/2005, 06h47
  5. Problème d'insertion dans la base.
    Par roots_man dans le forum ASP
    Réponses: 2
    Dernier message: 14/09/2004, 12h56

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