Si tu débutes en PHP, il serait préférable que tu adoptes ("les nouvelles pratiques qui soit dit en passant ne sont plus si nouvelles que cela"). En effet l'interface d'abstration d'accès aux Bases de données PDO implémente des méthodes permettant d'éviter ce genre de petit problème.
Par exemple la méthode PDO::quote() te permet de protèger une chaîne pour l'utiliser dans une requête SQL PDO.
http://www.php.net/manual/fr/book.pdo.php
Sophonie.
]]>vous devriez utiliser des requêtes préparées (http://docs.postgresql.fr/9.2/sql-prepare.html et http://php.net/manual/fr/function.pg-prepare.php), afin d'éviter tout problème d'échappement de variable, ou d'injection sql.
]]>en fait il faut mettre '' pour encadrer chaque variable pour préciser le type alphanumérique en php:
$res1=pg_query("INSERT INTO client (numclient,nom,prenom,adr1,adr2,codep,ville,mail) VALUES('$numclient','$nom','$prenom','$adr1','$adr2','$codep','$ville','$mail')");
28marc28
]]>Manque t'il quelque chose au niveau php ?
ou est-ce le type de donnée de postgre qui n'est pas bon ?
par avance merci.
28marc28
]]>voila, je ne suis pas une bête en php, mais programmeur en VB.
je n'arrive pas a ajouter une enregistrement dans ma base à partir d'un fichier php.
Voici la structure de la base sur postgre:
CREATE TABLE client
(
numclient character varying(4),
nom character varying(50),
adr1 character varying(100),
adr2 character varying(100),
codep character varying(5),
ville character varying(100),
mail character varying(100),
prenom character varying(50)
)
Voici mon code php:
require("config1.php");
$ChaineConnexion1="host='$host1' port='$port1' user='$login1' password='$passwd1' dbname='$base1'";
$db1 = pg_connect($ChaineConnexion1);
$requete1 = pg_query("SELECT * FROM client");
$numclient = pg_num_rows($requete1);
$numclient++;
$requete1 = pg_query("SELECT * FROM client WHERE mail = '$mail'");
$cont1 = pg_num_rows($requete1);
if($cont1<"1")
{ // n'existe pas donc création
$res1=pg_query("INSERT INTO client (numclient,nom,adr1,adr2,codep,ville,mail,prenom) VALUES($numclient,$nom,$adr1,$adr2
,$codep,$ville,$mail,$prenom)");
}
else
{ // existe alors message et renvoi sur le site
echo"pas OK";
}
pg_close($db1);
Ca ne fonctionne pas sauf si je supprime mail et $mail
Comment cela se fait il ? mail est il interdit ?
Avez vous une idée ??
28marc28
]]>