Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PDO
PDO Forum d'entraide sur PDO (PHP Data Objects) : pilote générique de bases de données avec PHP. Avant de poster -> FAQ PDO et Cours PDO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/03/2008, 17h12   #1
Membre du Club
 
Homme
Inscription : janvier 2008
Messages : 239
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27

Informations forums :
Inscription : janvier 2008
Messages : 239
Points : 58
Points : 58
Par défaut Insertion dans la base

Bonjour,

J'ai un souci avec ma requête sql qui en n'est jamais executée (aucun enregistrement dans la bdd)...

voici le code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php
if (!empty($_POST["valider"]))
	{
	if(!empty($_POST["nom"]) && !empty($_POST["prenom"]) && !empty($_POST["age"]) && !empty($_POST["adresse"]) && !empty($_POST["ville"]) && !empty($_POST["mail"]))
		{
		//////////// CONNEXION A LA BASE DE DONNEES /////////////////
		define ('USER1', 'root');
		define ('PASS', '0000');
		define ('DSN', 'mysql:host=localhost;dbmane=magasin');
 
		try
			{
			$connexion_bdd = new PDO(DSN, USER1, PASS);
			}
		catch (PDOException $e)
			{
			trigger_error($e->getMessage(),E_USER_ERROR); 
			}
 
		$requete = 'INSERT INTO client (id_client, nom, prenom, age, adresse, ville, mail) VALUES (:id_client , :nom , :prenom , :age , :adresse , :ville , :mail)';
		$resultat = $connexion_bdd->prepare($requete);
 
		$id_client = '\N';
		$nom = $_POST['nom'];
		$prenom = $_POST['prenom'];
		$age = $_POST['age'];
		$adresse = $_POST['adresse'];
		$ville = $_POST['ville'];
		$mail = $_POST['mail'];
 
		$resultat->execute(array(':id_client'=>$id_client, ':nom'=>$nom, ':prenom'=>$prenom,':age'=>$age, ':adresse'=>$adresse, ':ville'=>$ville, ':mail'=>$mail));
 
		if($connexion_bdd->lastInsertId() != "0")
			{
			print("<div class=\"centrer\">Enregistrement effectué avec succès !</div>");
			}
		else
			{
			print("<div class=\"centrer\">Enregistrement non effectué</div>");
			}
 
		$connexion_bdd = NULL;	
		/////////// FIN OPERATION BASE DE DONNEES ////////////		
		}
	else
		{
		print("Pour continuer tous les champs doivent être complétés !");
		}
	}
?>
Merci d'avance pour vos lumières
popy67 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2008, 10h02   #2
Membre éclairé
 
Avatar de deY!
 
Inscription : avril 2006
Messages : 403
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : avril 2006
Messages : 403
Points : 358
Points : 358
Utilise bindParam pour affecter tes valeurs, ça fera plus propre deja.
Ensuite je pense que ce n'est pas nécessaire d'affecter une valeur à id_client puisqu'il est surement en auto_increment.

Ensuite, execute retourne true ou false, donc pas la peine de faire une pseudo verification avec lastInsertId.

Utilise errorInfo() pour connaitre la veritable erreur PDO
__________________
deY!
deY! est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2008, 23h06   #3
Membre du Club
 
Homme
Inscription : janvier 2008
Messages : 239
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27

Informations forums :
Inscription : janvier 2008
Messages : 239
Points : 58
Points : 58
salut !

Merci grace à un print_r errorInfo() j'ai trouvé Aucune base n'a été selectionnée ... dbmane au lieu de dbname...

Pourquoi tu me conseilles d'utiliser BindParam je connais un peu mais je trouve que c'est plus compliqué ??

Merci pour ton aide
popy67 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2008, 13h48   #4
Membre éclairé
 
Avatar de deY!
 
Inscription : avril 2006
Messages : 403
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : avril 2006
Messages : 403
Points : 358
Points : 358
bindParam ou bindValue.
C'est plus simple, plus propre et plus facile à la relecture.
$stmt->bindValue(':key', $value);

c'est pas trés compliqué...
__________________
deY!
deY! est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h09.


 
 
 
 
Partenaires

Hébergement Web