#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
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