+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2
  1. #1
    Invité régulier
    Homme Profil pro
    etudiant en BTS SIO
    Inscrit en
    juin 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : etudiant en BTS SIO

    Informations forums :
    Inscription : juin 2012
    Messages : 20
    Points : 8
    Points
    8

    Par défaut pb script insert into, erreur encodage ?

    Bonjour,
    J'ai codé un script php pour réaliser un insert into dans une bdd pgsql sur un serveur mutualisé. Les données a traiter sont dans un fichier .txt
    Le problème est le suivant:
    L'insert fonctionne sauf que j'ai toute les apostrophes dans mon fichier qui ne sont pas prises en compte et donc supprimées laissant un bel espace a la place.
    Bref je voulais savoir comment je fais pour réussir à tout insérer sans avoir a modifier le contenu de mon fichier à l'aide d'un str_replace ?
    Serait-ce du a un problème d'encodage de mon fichier qui ne serait pas pris en compte par pgsql ?
    Ou existe-il une fonction en php pour réussir l'insertion avec l'apostrophe ?
    Étant débutant, j'ai vraiment aucune idée de la façon dont je dois procéder pour remédier à cela.

    Voici mon script:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php
     
    $fichier = 'globalpipe.txt'; 
    $contenu_array = file($fichier);
    $connexion = pg_connect( "host=xxx.sql.nerim.net port=5432 dbname=xxx user=xxx password=xxx" )or die("Connexion impossible");
    echo 'Connexion réussie'."</br>";
     
    foreach($contenu_array AS $element)
    {
    	$data = explode("	", $element);
    $result = pg_query($connexion, "INSERT INTO fiche_client (evalva, confiance, ret, jours, date_entree, propale, lastcall, lastmail, nextplan, appels) VALUES ('".$data[1]."', '".$data[2]."', '".$data[3]."', '".$data[4]."', '".$data[5]."', '".$data[6]."', '".$data[7]."', '".$data[8]."', '".$data[9]."', '".$data[10]."')");
    }
    pg_close($connexion);
     
    ?>
    et voici un exemple d'erreur type qu'il me ressort concernant l'apostrophe:
    Code :
    1
    2
     
    Warning: pg_query() [function.pg-query]: Query failed: ERROR: syntax error at or near "hui" LINE 1: ...07/01/13', '08/01/2013', '', '', '', '', 'Aujourd'hui : ', '... ^ in /filer/m/y/mycompany/myadsl/_codes_sources/testsql.php on line 25
    Merci d'avance pour votre aide.

  2. #2
    Expert Confirmé Sénior
    Homme Profil pro
    MOA? hahaha - MOE? euhh - Chapeau pointu? turlututu!
    Inscrit en
    septembre 2002
    Messages
    3 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : MOA? hahaha - MOE? euhh - Chapeau pointu? turlututu!

    Informations forums :
    Inscription : septembre 2002
    Messages : 3 181
    Points : 5 821
    Points
    5 821

    Par défaut

    Salut,


    http://stackoverflow.com/questions/4...-escape-string

    http://fr.php.net/manual/fr/function.addslashes.php

    Retourne la chaîne str, après avoir échappé tous les caractères qui doivent l'être, pour être utilisée dans une requête de base de données. Ces caractères sont les guillemets simples ('), guillemets doubles ("), antislash (\) et NUL (le caractère NULL).

    Un exemple d'utilisation d' addslashes() est lorsque vous entrez des données dans une base de données. Par exemple, pour insérer le nom O'reilly dans la base, vous aurez besoin de le protéger. Il est fortement recommandé d'utiliser les fonctions de protection spécifiques à chaque base de données (telle que mysqli_real_escape_string() pour MySQL et pg_escape_string() pour PostGreSQL), mais si la base de données que vous utilisez n'a pas de fonction spécifique, et que cette base utilise \ pour protéger les caractères spéciaux, vous pouvez utiliser cette fonction. Grâce à elle, \ sera ajouté. Si la directive PHP magic_quotes_sybase est activée, ' sera protégé par un autre '.

    La directive PHP magic_quotes_gpc est à on par défaut avant PHP 5.4, et elle appelle addslashes() sur toutes les données GET, POST et COOKIE. N'utilisez pas addslashes() sur des données déjà protégées avec magic_quotes_gpc sinon vous doublerez les protections. La fonction get_magic_quotes_gpc() est utile pour vérifier ce paramètre.
    Alea Jacta Test!

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •