Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Fri 07 June 2013 13:29

Anaïs Just
Participant actif
Lieu: Montreuil
Date d'inscription: 10 Dec 2007
Messages: 131

php: insert into avec apostrophe

Bonjour,

Je suis entrain de mettre le nez dans le code d'une application qui utilise extjs et php (base de données postgresql)...

L'application de visualisation en ligne permet aussi de saisir un commentaire sur une donnée géographique (polygone) en faisant un insert into dans une table de postgres à partir d'un script php.

Cependant quand l'utilisateur saisi un commentaire textuel sur la donnée et qu'il utilise l'apostrophe on trouve une erreur dans les log de postgres (cela fonctionne pourtant avec les accents): l'insert into ne fonctionne pas.

Si la personne qui commente remplace son apostrophe par une double côte l'insertion fonctionne bien.

Je souhaiterais que cet ajout de double côte (apostrophe échappée) se fasse automatiquement.
J'ai donc essayé d'ajouter un pg_escape_string dans le script php de la façon suivante:

Code:

$dbconn = pg_connect("host=xxxx port=5432 dbname=xxx user='".$_SERVER['PHP_AUTH_USER']."' password=xxxxx");

$varcomment = pg_escape_string($_POST['comment']);  

$insert_commandes="INSERT INTO exploitation.commentaires (prenom,nom,email,comment,utilisateur,cd_ref,id_obj,id_obs, date_com, type_com, priorite_com, action_com,nom_complet) values ('".$_POST['prenom']."','".$_POST['nom']."','".$_POST['email']."','" . $varcomment . "','".$_SERVER['PHP_AUTH_USER']."',".$_POST['cd_ref'].",'".$_POST['id_obj']."','".$_POST['id_obs']."',CURRENT_DATE,'".$_POST['type_com']."','".$_POST['priorite_com']."','".$_POST['action_com']."','".$_POST['nom_complet']."') returning id;";

Ma requête fonctionne toujours mais ne permet toujours pas l'insertion des commentaires avec une apostrophe...

Auriez vous une idée??

ça me serait grandement utile :-)

Merci à tous!

Dernière modification par Anaïs Just (Fri 07 June 2013 13:30)

Hors ligne

 

#2 Fri 07 June 2013 16:48

simon_g
Participant assidu
Lieu: Paris
Date d'inscription: 4 Oct 2006
Messages: 195
Site web

Re: php: insert into avec apostrophe

Bonjour Anaïs,

Tu peux essayer comme suit :

Code:

$insert_commandes="INSERT INTO exploitation.commentaires (prenom,nom,email,comment,utilisateur,cd_ref,id_obj,id_obs, date_com, type_com, priorite_com, action_com,nom_complet) values ('".$_POST['prenom']."','".$_POST['nom']."','".$_POST['email']."','{" . $varcomment . "}','".$_SERVER['PHP_AUTH_USER']."',".$_POST['cd_ref'].",'".$_POST['id_obj']."','".$_POST['id_obs']."',CURRENT_DATE,'".$_POST['type_com']."','".$_POST['priorite_com']."','".$_POST['action_com']."','".$_POST['nom_complet']."') returning id;";

tu noteras l'utilisation des curly brackets {}.

Mieux encore, tu peux utiliser la fonction pg_query_params pour éviter les mauvaises surprises ultérieurement sur d'autres champs, ou encore les requêtes préparées

Dernière modification par simon_g (Fri 07 June 2013 22:08)

Hors ligne

 

#3 Fri 07 June 2013 17:01

Anaïs Just
Participant actif
Lieu: Montreuil
Date d'inscription: 10 Dec 2007
Messages: 131

Re: php: insert into avec apostrophe

Merci merci!!

En fait ma requête fonctionnait telle quelle, je l'avais juste oublié d'enregistrer les modifs de mon fichier ;-)
Pas besoin des accolades donc (cela ajoute des accolades dans l'enregistrement texte).
Je vais jeter un coup d'oeil aux fonctions dont tu m'as parlé.

Bonne journée!

Hors ligne

 

Pied de page des forums

Powered by FluxBB