Bonjour à tous et à toutes, je viens vous présenter mon problème.

Alors voilà ce que m'affiche mon site:
Warning: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in /public_html/index.php on line 87

Et voici à quoi ressemble mon script:
Ce script à pour but de présenter un formulaire d'inscription et d'envoyer le formulaire dans ma base de donnée une fois remplis par l'utilisateur.

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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<html>
 
<head><title>Guilde-Spartiates</title>
</head>
 
 
<body>
 
<h3>formulaire d'inscription</h3>
 
<?php
 
	$ip = 'xxx';
	$user = 'xxx';
	$pw = 'xxx'; 
$bdd = new PDO('mysql:host=xxx;dbname=xxx', 'xxx', 'xxx');
@mysql_connect($ip, $user, $pw) or die('La connexion à la base de donnée s\'est mal déroulée.');
@mysql_select_db(xxx);
echo '
 <FORM method="post" action="">
              <TABLE>
<TBODY><TR><TD width="320">Nom de compte:</TD><TD><INPUT type="text" name="login"></TD></TR>
<TR><TD>Mot de passe:</TD><TD><INPUT type="password" name="pass"></TD></TR>
<TR><TD>Mot de passe (vérification):</TD><TD><INPUT type="password" name="pass2"></TD></TR>
<TR><TD>E-mail:</TD><TD><INPUT type="text" name="email"></TD></TR>
<TR><TD>Question secrète:</TD><TD><INPUT type="text" name="ask"></TD></TR>
<TR><TD>Réponse secrète:</TD><TD><INPUT type="text" name="ans"></TD></TR>

<TR><TD><TD><INPUT type="submit" name="submit" name="Envoyer" value="S\'inscrire"></TD></TR>
</TBODY></TABLE>
              </FORM>

        </DIV>
		      ';
          if(isset($_POST['submit'])) {
              if ( !$_POST['login'] || !$_POST['pass'] || !$_POST['pass2'] || !$_POST['email'] || !$_POST['ask'] || !$_POST['ans']) {
                echo '<span style="color:red"><strong>Tout les champs doivent être remplis.</strong></span>';
              }
              else {
                $aUser  = $_POST['login'];
                $aPass  = $_POST['pass'];
                $aPass2 = $_POST['pass2'];
                $aEmail   = $_POST['email'];
                $aAsk = $_POST['ask'];
                $aAns = $_POST['ans'];
 
 
 $sql = "SELECT user FROM account WHERE user='$aUser'";
    $req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
 
    // on compte le nombre de résultats
    $res = mysql_num_rows($req);
 
    if($res!=0)  // le chapm existe déjà, on affiche un message d'erreur
        {
        echo '<font color="red"><strong><center>Désolé, mais ce champ existe déjà dans notre base.</center></strong></font>';
 
        }
 
        $sql2 = "SELECT mail FROM account WHERE mail='$Email'";
    $req2 = mysql_query($sql2) or die('Erreur SQL !'.$sql2.'<br>'.mysql_error()); 
 
    // on compte le nombre de résultats
    $res2 = mysql_num_rows($req2);
 
    if($res2!=0)  // le champ existe déjà, on affiche un message d'erreur
        {
        echo '<font color="red"><strong><center>Désolé, mais ce champ existe déjà dans notre base.</center></strong></font>';
 
        }       
 
 
              elseif ($aPass != $aPass2){
               echo '<span style="color:red"><strong>Les deux mots de passe sont différents.</strong></span>';
              }
 
 
              else {
			 $req3 = $bdd->prepare('INSERT INTO account(ID, user, mdp, mail, Question, Réponse) VALUES(:ID, :user, :mdp, :mail, :Question, :Réponse)');
$req3->execute(array(
	'ID' => Null,
	'user' => $aUser,
	'mdp' => $aPass,
	'mail' => $aEmail,
	'Question' => $aAsk,
	'Réponse' => $aAns
	)); 
              if ($req3) {
                echo '<span style="color:green"><strong>Votre compte a été créé avec succès.</strong></span>';
              }
              else {
                echo '<span style="color:red"><strong>Erreur lors de l\'inscription</strong></span>';
              }
              }
              }
              }
 
 
?>
Veuillez m'excuser pour le désordre.