Insérer directement des variables provenant de post dans une

barbarien36
Invité n'ayant pas de compte PHPfrance

31 mars 2006, 14:14

Bonjour tout lemonde,

Je viens vers vous pour avoir une information. Actuellement lorsque je veux faire une requête ajout aprés avoir remplis un formulaire, je suis obligé de passer tout mes variables dans d'autres variables avans de pouvoir mettre celle-ci dans ma requête insert. Bon comme cela n'est peut être pas très clair voici un exemple :

ce que je suis obligé de faire :

$test=$_POST['nom'];
$sql = "INSERT INTO dip2france.personne VALUES (DEFAULT,'$test')";
pg_query($sql);

Ce que je souhaiterai faire ces pouvoir mettre directement :
$sql = "INSERT INTO dip2france.personne VALUES (DEFAULT,'$_POST['nom']')";
pg_query($sql);

Sauf que si je fais cela il me met une erreur. Pourtant j'ai essayer en mettant des double cottes, des slaches (je suis pas sur de l'écriture), mais rien n'y fais.

Donc si vous avez une idée, je suis preneur.

Merci et bonne journé.

Ludo

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

31 mars 2006, 14:26

Normalement c'est tout à fait possible
$sql = "INSERT INTO dip2france.personne VALUES (DEFAULT,'".$_POST['nom']."')"; 
Si ta variable contient une chaîne valide, peu importe de l'insérer directement ou de passer par une autre variable.
Mais bon, c'est une très mauvaise idée, car il suffit que tu ais une apostrophe dans le nom par exemple et ta requête plante.
(ce serait le même problème avec une variable intermédiaire ceci dit, si elle n'est pas traitée avec addSlashes() par ex)

Et encore on ne sait jamais, quelqu'un peut mettre intentionnellement du code dans "nom" histoire de te pourrir ta base

Donc on ne met pas directement des variables dans une requête
On les récupère, on les teste, on les traite, et on les insère
Modifié en dernier par ouckileou le 31 mars 2006, 14:40, modifié 1 fois.

Invité
Invité n'ayant pas de compte PHPfrance

31 mars 2006, 14:37

Merci beaucoup. En effet, je n'avais pas vue ca comme ca.

Ludo