Connexion base de donnée (PDO, PHP)

emiliengbd Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -
Bonjour, lors de la création de ma page "register", pour inscrire mes membres j'ai tenté ce code :

 if($mdp == $mdp2) {
$insertmbr = $bdd->prepare("INSERT INTO membres(pseudo, mail, motdepasse, snap, snapadd) VALUES(?, ?, ?, ?, ?)");
$insertmbr->execute(array($pseudo, $mail, $mdp, $snap, $snapadd));
$erreur = "Votre compte a bien été créé ! <a href=\"connexion.php\">Me connecter</a>";


Mais à chaque fois que je test, ce message s'affiche :

Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in /home/u116798652/public_html/register.php on line 23


je précise que la ligne 23 c'est tout simplement ca :
$insertmbr->execute(array($pseudo, $mail, $mdp, $snap, $snapadd));


Voila, donc quelqu'un aurait-il une solution ?
Merci d'avance.
A voir également:

1 réponse

Utilisateur anonyme
 
Bonjour

Très étonnant. On dirait bien qu'il y a le bon nombre de paramètres.
Si tu fais tes essais en ligne, tu es sûr que le fichier register.php est bien à jour sur le site par rapport à ton PC ?
Tu peux montrer les 23 premières lignes (en cachant les identifiants s'il y en a )
0
emiliengbd Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   43
 
Le register et bien à jour sur le site, je le ré-Upload à chaque modif...
0
emiliengbd Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   43
 
Voici le code complet :
<?php
$bdd = new PDO('mysql:dbname=;host=', '', '');

if(isset($_POST['forminscription'])) {
   $pseudo = htmlspecialchars($_POST['pseudo']);
   $mail = htmlspecialchars($_POST['mail']);
   $mail2 = htmlspecialchars($_POST['mail2']);
   $mdp = sha1($_POST['mdp']);
   $mdp2 = sha1($_POST['mdp2']);
   $snap = htmlspecialchars($_POST['snap']);
   $snapadd = "https://www.snapchat.com/add/$snap";
   if(!empty($_POST['pseudo']) AND !empty($_POST['mail']) AND !empty($_POST['mail2']) AND !empty($_POST['mdp']) AND !empty($_POST['mdp2'])) {
      $pseudolength = strlen($pseudo);
      if($pseudolength <= 255) {
         if($mail == $mail2) {
            if(filter_var($mail, FILTER_VALIDATE_EMAIL)) {
               $reqmail = $bdd->prepare("SELECT * FROM membres WHERE mail = ?");
               $reqmail->execute(array($mail));
               $mailexist = $reqmail->rowCount();
               if($mailexist == 0) {
                  if($mdp == $mdp2) {
                     $insertmbr = $bdd->prepare("INSERT INTO membres(pseudo, mail, motdepasse, snap, snapadd) VALUES(?, ?, ?, ?, ?)");
                     $insertmbr->execute(array($pseudo, $mail, $mdp, $snap, $snapadd));
0
Utilisateur anonyme > emiliengbd Messages postés 70 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai beau essayer des cas de figure tordus, je n'arrive pas à reproduire le problème.
Le message d'erreur est bien celui indiqué dans ton premier message ?

Je te propose d'essayer ta requête en ne mettant d'abord aucun ? dans la requête (des valeurs fixes dans VALUES) et un execute (array()), puis d''ajouter les ? et les élémnts d'array correspondant un par un pour observer quand cette bizarrerie apparaît
0