Précédent   Forum du club des développeurs et IT Pro > PHP > Scripts
Scripts Forum d'entraide sur les scripts PHP téléchargés. Les meilleurs scripts PHP, la FAQ scripts PHP, toutes les FAQ PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 07/01/2013, 15h16   #1
nico9275
Invité régulier
 
Homme
etudiant en BTS SIO
Inscription : 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 : 7
Points : 7
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.
nico9275 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2013, 17h30   #2
Mygale1978
Expert Confirmé Sénior
 
Homme Laurent Willems
Expert Stop/Start
Inscription : septembre 2002
Messages : 2 883
Détails du profil
Informations personnelles :
Nom : Homme Laurent Willems
Âge : 34
Localisation : Belgique

Informations professionnelles :
Activité : Expert Stop/Start

Informations forums :
Inscription : septembre 2002
Messages : 2 883
Points : 5 416
Points : 5 416
Salut,


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

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

Citation:
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!
Mygale1978 est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 00h08.


 
 
 
 
Partenaires

Hébergement Web