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

#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.

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

Pied de page des forums