Vous n'êtes pas identifié(e).

#1 30/03/2012 10:48:22

celle
Membre

PostgreSQL, pg_escape_string et INSERT

Bonjour,
J'ai la fonction suivante :

function saisieRef($nom_table,$lib,$nom_champ) {
   $lib = pg_escape_string($lib);
   $sql = "INSERT INTO ".$nom_table." (lib".$nom_champ." VALUES ('$lib')";
   return $this->db->query($sql,"",_FUNCTION_,_FILE_);
}

Quand je lance mon programme, l'insert se fait bien dans la BDD mais j'ai un WARNING, un DATABASE ERROR et un PostgreSQL error à l'écran.
J'ai le même principe pour un UPDATE et là, aucun message d'erreur à l'écran, je ne comprends pas pourquoi.

Quelqu'un a-il une idée ?

Hors ligne

#2 30/03/2012 11:19:40

gleu
Administrateur

Re : PostgreSQL, pg_escape_string et INSERT

Quand vous avez une erreur, donnez l'erreur en question, ça peut aider...


Guillaume.

Hors ligne

#3 30/03/2012 11:21:44

gleu
Administrateur

Re : PostgreSQL, pg_escape_string et INSERT

Cela étant dit, il manque une parenthèse fermante après le nom du champ. Et il est important d'échapper aussi les noms d'objets (pg_escape_identifier).


Guillaume.

Hors ligne

#4 30/03/2012 12:57:27

celle
Membre

Re : PostgreSQL, pg_escape_string et INSERT

La parenthese manquante est une erreur de recopie du code. Dans mon code, elle est bien présente.
L'erreur est :

Warning: pg_exec() [function.pg-exec]: Query failed: ERREUR: erreur de syntaxe sur ou près de « u » LINE 1: ...nature as libelle FROM natures WHERE libnature='l'u' ORDER B... ^ in D:\wamp\wamp\www\opex\libs\phptoolsoft\class.db.postgres.php on line 109
Database error: Invalid SQL: SELECT numnature as code, libnature as libelle FROM natures WHERE libnature='l'u' ORDER BY libnature
PostgreSQL Error: 1 (ERREUR: erreur de syntaxe sur ou près de « u » LINE 1: ...nature as libelle FROM natures WHERE libnature='l'u' ORDER B... ^)
Ajout Réussi.

Je rappelle que l'insertion se fait bien :
- le message de retour est bien ajout réussi
- la BDD est bien mise à jour
- lors de l'affichage de la table j'ai bien la ligne inséré qui s'affiche

Hors ligne

#5 30/03/2012 13:06:18

gleu
Administrateur

Re : PostgreSQL, pg_escape_string et INSERT

Le message est très clair. Le problème n'a rien à voir avec l'INSERT, mais avec un SELECT et le problème de syntaxe est dû au filtre : WHERE libnature='l'u'... la valeur de comparaison de libnature n'est pas échappée.


Guillaume.

Hors ligne

#6 30/03/2012 13:15:01

celle
Membre

Re : PostgreSQL, pg_escape_string et INSERT

Merci j'étais tellement obnubilé par le fait que lors de l'ajout j'avais le message et pas lors de la modification que je n'ai pas fait attention que l'erreur était sur le select qui ne faisait pas la même chose dans les 2 cas.
Merci beaucoup.
La fin de semaine est dure.

Hors ligne

Pied de page des forums