Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 12/07/2013 10:11:48
- 28marc28
- Membre
ptit problème php
Bonjour à tous,
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
Dernière modification par 28marc28 (12/07/2013 10:38:12)
Hors ligne
#2 12/07/2013 11:02:27
- 28marc28
- Membre
Re : ptit problème php
visiblement cela fonctione seulement quand je saisie des chiffres, cela ressemble à un problème de type de donnée.
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
Dernière modification par 28marc28 (12/07/2013 11:20:46)
Hors ligne
#3 12/07/2013 11:31:16
- 28marc28
- Membre
Re : ptit problème php
Bon j'ai trouvé, si cela peut serveur pour les mauvais en php comme moi.
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
Hors ligne
#4 12/07/2013 18:08:13
- rjuju
- Administrateur
Re : ptit problème php
Bonjour,
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.
Julien.
https://rjuju.github.io/
Hors ligne
#5 23/07/2013 00:01:10
- sophonie
- Membre
Re : ptit problème php
Bonsoir,
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.
Dernière modification par sophonie (23/07/2013 00:01:27)
Hors ligne
Pages : 1