$sql=pg_query($conn,"INSERT INTO utilisateurs (pseudo, motdepasse) VALUES ('".$pseudo."','".$password."') RETURNING id")or die ('Erreur connexion'. pg_last_error($conn));
]]>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));
]]>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).
]]>$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?
]]>