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 15/04/2011, 00h17   #1
Invité de passage
 
Inscription : avril 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 3
Points : 0
Points : 0
Par défaut Warning: PDOStatement: :execute()

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 :
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.
Sleef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2011, 00h22   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Il faut mettre les : dans ton tableau de paramètres aussi.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 15/04/2011, 00h28   #3
Invité de passage
 
Inscription : avril 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 3
Points : 0
Points : 0
Comme cela ?

Code :
1
2
3
4
5
6
7
8
9
$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
	));
Sleef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2011, 09h10   #4
Membre éprouvé
 
Avatar de radicaldreamer
 
Homme Guillaume
Développeur Web
Inscription : décembre 2007
Messages : 353
Détails du profil
Informations personnelles :
Nom : Homme Guillaume
Âge : 21
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2007
Messages : 353
Points : 473
Points : 473
Bah testes, tu verras bien.
__________________
Si ce que tu as à dire n'est pas plus beau que le silence, alors tais toi.

- Pensez à voter pour les messages qui vous ont été utiles ainsi que de mettre
radicaldreamer est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 15/04/2011, 12h37   #5
Invité de passage
 
Inscription : avril 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 3
Points : 0
Points : 0
Et bien j'ai testé, mais cela ne fonctionne toujours pas.
Toujours la même erreur.
Sleef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2011, 00h34   #6
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Je ne suis pas sur qu'il aime avoir un paramètre NULL ; si tu ne définis pas l'id, autant ne pas le mettre du tout dans la requête.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h05.


 
 
 
 
Partenaires

Hébergement Web