Bonjour,

Le code ci-dessous ne créer pas l'enregistrement dans la base de données; j'ai volontairement mis la syntaxe pdo avec des ':' et la standard avec les variables traditionnelles :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
	//Récupération des informations saisies
	$nom = $_POST['nom'];
	$prenom = $_POST['prenom'];
	$adresse = $_POST['adresse'];
	$batetage = $_POST['batetage'];
	$code_postal = $_POST['code_postal'];
	$ville = $_POST['ville'];
	$pays = $_POST['pays'];
	$email = $_POST['email'];
	$offres_commerciales = $_POST['offres_commerciales'];
	$offres_partenaires = $_POST['offres_partenaires'];
	$login = $_POST['login'];
	$question_secrete = $_POST['question_secrete'];
	$reponse_secrete = $_POST['reponse_secrete'];
 
	//Génération du mot de passe
	$pass = rand(10000,99999); //MDP en clair
	$password = sha1($pass); //MDP Crypté
	//Fin génération du mot de passe
 
	//Récupération de l'adresse IP
	$ip_inscription = $_SERVER['REMOTE_ADDR'];
 
	//Daate et heure sous forme de timestamp
	$date_inscription = time();
 
 
	//Requete SQL & traitements PDO
	$sql = "INSERT INTO client (nom, prenom, adresse, batetage, code_postal, ville, pays, email, offres_commerciales, offres_partenaires, login, password, question_secrete, reponse_secrete, ip_inscription, date_inscription) VALUES (:nom, '$prenom', '$adresse', '$batetage', '$code_postal', '$ville', '$pays', '$email', '$offres_commerciales', '$offres_partenaires', '$login', '$password', '$question_secrete', '$reponse_secrete', '$ip_inscription', '$date_inscription')";
	$stmt = $dbh->prepare($sql);
 
	$stmt->BindParam(':nom', $nom);
	$stmt->BindParam(':prenom', $prenom);
	$stmt->BindParam(':adresse', $adresse);
	$stmt->BindParam(':batetage', $batetage);
	$stmt->BindParam(':code_postal', $code_postal);
	$stmt->BindParam(':ville', $ville);
	$stmt->BindParam(':pays', $pays);
	$stmt->BindParam(':email', $email);
	$stmt->BindParam(':offres_commerciales', $offres_commerciales);
	$stmt->BindParam(':offres_partenaires', $offres_partenaires);
	$stmt->BindParam(':login', $login);
	$stmt->BindParam(':question_secrete', $question_secrete);
	$stmt->BindParam(':reponse_secrete', $reponse_secrete);
	$stmt->BindParam(':password', $password);
	$stmt->BindParam(':ip_inscription', $ip_inscription);
	$stmt->BindParam(':date_inscription', $date_inscription);
 
	$stmt->execute(); //Execution de la requête
La requête créee par le code ci-dessus est la suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
INSERT INTO client (nom, prenom, adresse, batetage, code_postal, ville, pays, email, offres_commerciales, offres_partenaires, login, password, question_secrete, reponse_secrete, ip_inscription, date_inscription) VALUES (:nom, 'iiii', 'i', 'oi', '', 'oio', 'io', 'o', '', '', '', '8fe455256bed73443dfd02fdfc42bac42b50602b', '', '', '127.0.0.1', '1236018562')
La ou il y a les variables dans la reuqte tout se passe bien en revanche :nom n'est pas transformé et cela est pareil si je remplace les autres variables par la syntaxe ':'.

L'erreur renvoyée par SQL est : SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens

Merci d'avance pour votre aide

Quelle est l'erreur ?