Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#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
Pages : 1