2013-05-01 1 views
-1

Je n'ai pas défini cette fonction:SQLSTATE [HY093]: numéro de paramètre non valide: paramètre a été POO

private function sendVerification($username, $email) 
    { 
     global $pdo; 

     $this->check = $pdo->prepare("SELECT * FROM users where user_name = :username AND user_email = :email"); 
     $this->check->execute(array(
     ":username" => $username, 
     ":email" => $email 
     )); 

     if ($this->check->rowCount()) 
     { 
      $this->get = $this->check->fetch(PDO::FETCH_ASSOC); 

      $this->insert = $pdo->prepare 
      (" 
      INSERT INTO account_verification 
      (user_id, generated_code, date, time) 
      VALUES 
      (:id, :code, CUTDATE(), CURTIME()) 
      "); 

      $this->insert->execute(array(
      ":id" => $this->get['user_id'], 
      "generated_code" => Users::generateCode($email) 
      )); 
     } 
     else 
     { 
      throw new exception ("An error has occured!"); 
     } 
    } 

L'accès à ce statique:

public static function generateCode($salt) 
    { 
     return substr(hash('sha512', $salt), 0, 15); 
    } 

D'abord, je suis en utilisant le nom d'utilisateur & email pour valider qu'il y a une ligne avec eux, Ensuite, j'ajoute un var qui contiendra un tableau récupéré.

Et puis je vérifie si son rowCount, puis en insérant des données.

Problème:

Je reçois cette erreur

SQLSTATE[HY093]: Invalid parameter number: parameter was not defined 

Je ne suis pas trop sûr pourquoi je reçois, je ne l'ai jamais vécu cette erreur, je l'ai lu à ce sujet, mais ne comprenait pas quel serait le problème dans mon code.

Question:

Quasiment, pourquoi cette erreur signifie, et ce qui est la cause?

+2

Votre paramètre est ': code', pas': generated_code' comme vous l'avez dans le tableau 'execute()'. –

Répondre

2

Le problème est que dans votre requête d'insertion vous faites référence à un paramètre de maned :code, alors que lorsque vous exécutez l'instruction préparée, vous utilisez une référence de paramètre incorrect de generated_code (sans deux points du tout). Changez cette référence de paramètre à :code et cela devrait fonctionner.

Le message d'erreur signifie à peu près exactement ce qu'il dit, que le paramètre generated_code n'a pas été défini.

+0

Oh, je vois. Je vous remercie. – user2326532

Questions connexes