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

EDI, CMS, Outils, Scripts et API PHP Discussion :

pb script insert into, erreur encodage ?


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    etudiant en BTS SIO
    Inscrit en
    Juin 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : etudiant en BTS SIO

    Informations forums :
    Inscription : Juin 2012
    Messages : 20
    Points : 15
    Points
    15
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Invité
    Invité(e)
    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.

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

Discussions similaires

  1. [AC-2003] Problème avec oDB.Execute"Insert into" erreur 3061
    Par SIGER_971 dans le forum Access
    Réponses: 5
    Dernier message: 08/07/2009, 11h54
  2. insert into erreur d'execution 3137
    Par soussou92 dans le forum VBA Access
    Réponses: 11
    Dernier message: 01/09/2008, 13h20
  3. Insert INTO : Erreur de Syntaxe
    Par mishkai dans le forum VBA Access
    Réponses: 2
    Dernier message: 04/08/2008, 09h25
  4. [MySQL] insert into , erreur
    Par naazih dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 02/05/2008, 14h43
  5. Script Insert into select
    Par manucha dans le forum SQL
    Réponses: 5
    Dernier message: 22/02/2008, 13h57

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