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

#1 01/11/2012 09:52:25

gentil2005
Membre

Insertion de données dans ma base Postgres impossible

Bonjour à tous,
Je viens de débuter avec Postgres en utilisant PHP et déjà, voilà le problème!
Je me connecte sans problème à ma base mais quand j'essaie d'inserer des données dans la seule table existence, on me dit qu'un colonne n'existe pas. voici donc mon code:


$sql=pg_query($conn,"INSERT INTO utilisateurs (pseudo, motdepasse) VALUES ($pseudo,$password) RETURNING id")or die ('Erreur connexion'. pg_last_error($conn));

c'est donc un formulaire de login simple que j'utilise, et quand je saisi "Gentil" dans le champ login, et un mot de passe quelconque, j'ai ce message d'erreur quand je clique sur envoyer:


Warning: pg_query() [function.pg-query]: Query failed: ERREUR: la colonne « gentil » n'existe pas LINE 1: ...RT INTO utilisateurs (pseudo, motdepasse) VALUES (gentil,gen... ^ in C:\wamp\www\zend_test_site\connexion.php on line 27
Erreur connexionERREUR: la colonne « gentil » n'existe pas LINE 1: ...RT INTO utilisateurs (pseudo, motdepasse) VALUES (gentil,gen... ^

pourtant dans la console quand je tape \d , j'ai bien la table complète avec les champs spécifiés ci-haut (en minuscule tous).

Merci


Remarque: je viens de remarquer que si dans la requête je remplace les variables php ($pseudo,$password) par des valeurs en dur ('papa','maman') la requête s’exécute et réinsertion est bien constaté, faut-il faire quoi pour ces variables?

Dernière modification par gentil2005 (01/11/2012 10:12:39)

Hors ligne

#2 01/11/2012 13:11:16

rjuju
Administrateur

Re : Insertion de données dans ma base Postgres impossible

Bonjour,

il faut entourer vos valeurs de simples cotes dans la requête générée. Il est important  d'échapper la chaîne également pour plus de sécurité (pg_escape_string() par exemple).

Hors ligne

#3 01/11/2012 13:18:02

gentil2005
Membre

Re : Insertion de données dans ma base Postgres impossible

Merci beaucoup pour l'attention!

Voilà comment je recois mes variables:

        $pseudo = pg_escape_string($_POST['pseudo']);
        $password = pg_escape_string($_POST['password']);

Donc je pense qu'elles sont echapées.

Comment on fait pour les entourer des simples cotes?

ceci ne marche pas?

$sql=pg_query($conn,"INSERT INTO utilisateurs (pseudo, motdepasse) VALUES (".$pseudo.",".$password.") RETURNING id")or die ('Erreur connexion'. pg_last_error($conn));

Hors ligne

#4 01/11/2012 13:25:16

rjuju
Administrateur

Re : Insertion de données dans ma base Postgres impossible

je dirais plutôt


$sql=pg_query($conn,"INSERT INTO utilisateurs (pseudo, motdepasse) VALUES ('".$pseudo."','".$password."') RETURNING id")or die ('Erreur connexion'. pg_last_error($conn));

Hors ligne

Pied de page des forums