IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Warning: PDOStatement: :execute()


Sujet :

PHP & Base de données

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 3
    Points : 1
    Points
    1
    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 : 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.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il faut mettre les : dans ton tableau de paramètres aussi.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Comme cela ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    	));

  4. #4
    Membre confirmé Avatar de rikemSen
    Homme Profil pro
    Analyste Développeur Web - Fizzup.com
    Inscrit en
    Décembre 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Décembre 2007
    Messages : 387
    Points : 540
    Points
    540
    Par défaut
    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

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Et bien j'ai testé, mais cela ne fonctionne toujours pas.
    Toujours la même erreur.

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    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.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. [ODBC] Warning: PDOStatement::execute()
    Par zenoX dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/10/2012, 00h27
  2. Réponses: 17
    Dernier message: 30/04/2012, 13h30
  3. Réponses: 6
    Dernier message: 27/10/2011, 13h27
  4. [MySQL] PDOStatement -> execute et précision sur valeur de retour
    Par richard_sraing dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 15/04/2011, 18h32
  5. Warning d'execution -> Access Violation
    Par skalimer0 dans le forum MFC
    Réponses: 4
    Dernier message: 26/06/2007, 15h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo