2017-01-12 2 views
-1
<?php 
    include_once 'session.php'; 
    include 'database.php'; 
    class user{ 

     private $db; 

     public function __construct(){ 
       $this->db= new Database(); 


     } 
     public function userRegistration($data){ 
        $name   = $data['name']; 
        $email   = $data['email']; 
        $password = md5($data['password']); 
        $chk_email = $this->emailCheck($email); 





              if($name == "" or $email == "" or $password == ""){ 
               $msg = "<div class = ' alert alert-danger'><strong>Error !</strong>Field must not be empty</div>" ; //bootstrap aleart massage 
               return $msg; 
              } 


                 if(filter_var($email,FILTER_VALIDATE_EMAIL)=== false){ // email validate 
                   $msg = "<div class ='alert alert-danger'><strong>Error ! </strong>Email address is not valid</div>"; 
                   return $msg; 

                 } 

              if ($chk_email==true){ 

              $msg = "<div class ='alert alert-danger'><strong>Error ! </strong>This email is already exist</div>"; 
              return $msg; 

            } 

          $sql = "INSERT INTO register_tbl(name,username,email,password,gender) VALUES(:name,:username,:email,:password,:gender)"; 
          $query = $this->db->pdo->prepare($sql); 
          $query->bindValue(':name',$name); 
          $query->bindValue(':email',$email); 
          $query->bindValue(':password',$password);   
          $result=$query->execute();//problem is here .. 
          if($result){ 
           $msg = "<div class = 'alert alert-success'><strong>Success .</strong>You have register now.</div>"; 
           return $msg; 

          }else{ 
           $msg = "<div class = 'alert alert-danger'><strong>Sorry !</strong>Some thing is not right</div>"; 
          } 


     } 



       public function emailCheck($email){ 
        $sql = "SELECT email FROM register_tbl WHERE email = :email "; 
        $query = $this->db->pdo->prepare($sql); // prepare() is the method of PDO class; 
        $query->bindValue(':email',$email); //bindValue() is the method of PDO class; 
        $query->execute(); 
        if($query->rowCount()>0){ 
         return true; 
        }else{ 
         return false; 
        }  
       } 

       public function getLoginUser($email,$password){ 
        $sql = "SELECT * FROM register_tbl WHERE email = :email AND password = :password LIMIT 1"; 
        $query = $this->db->pdo->prepare($sql); // prepare() is the method of PDO class; 
        $query->bindValue(':email',$email); //bindValue() is the method of PDO class; 
        $query->bindValue(':password',$password); 
        $query->execute(); 
        $result = $query->fetch(PDO::FETCH_OBJ); 
        return $result; 

       } 

     public function userLogin($data){ 

      $email   = $data['email']; 
      $password = md5($data['password']); 

              if($email == "" or $password == ""){ 
               $msg = "<div class = ' alert alert-danger'><strong>Error !</strong>Field must not be empty</div>" ; //bootstrap aleart massage 
               return $msg; 
              } 
              if(filter_var($email,FILTER_VALIDATE_EMAIL)=== false){ // email validate 
               $msg = "<div class ='alert alert-danger'><strong>Error ! </strong>Email address is not valid</div>"; 
               return $msg;           

              if ($chk_email==true){ 

              $msg = "<div class ='alert alert-danger'><strong>Error ! </strong>This email is not exist</div>"; 
              return $msg; 

            } 
           $result = $this->getLoginUser($email,$password); 
           if($result){ 
            Session :: init(); 
            Session :: setinit('login',true); 
            Session :: setinit('id',$this->id); 
            Session :: setinit('name',$this->name); 
            Session :: setinit('username',$this->username); 
            Session :: setinit('loginmsg',"<div class ='alert alert-success'><strong>Success ! </strong>You are login.</div>"); 

            header('index.php'); 

           }else{echo "<script class = 'alert alert-danger'><strong>Error</strong>some thing wrong</script>";} 


     } 

} 
    } 

>Uncaught исключение 'PDOException' с сообщением 'SQLSTATE [HY093]: Неверный номер параметра:

Фатальная ошибка: Uncaught исключение 'PDOException' с сообщением' SQLSTATE [HY093]: Неверный номер параметра: номер связанных переменных не совпадает с числом токенов в /opt/lampp/htdocs/project/log/user.php:51 Трассировка стека: # 0 /opt/lampp/htdocs/project/log/user.php(51): PDOStatement-> execute() # 1 /opt/lampp/htdocs/project/log/registration.php(9): user-> userRegistration (Array) # 2 {main} брошен в/opt/lampp/htdocs/project/log /user.php в строке 51 , пожалуйста, помогите мне ....

+1

Параметры счетчика неправильно. Так просто. –

+0

'$ query-> bindValue (': gender', $ gender); '+ same для имени пользователя. Об этом сообщает сообщение об ошибке. (EDIT: оба еще не определены) – Jeff

+2

3 не равен 5 –

ответ

0

Указано 5 параметров на вашем SQL:

:name,:username,:email,:password,:gender 

Но вы только переплетены 3:

$query->bindValue(':name',$name); 
$query->bindValue(':email',$email); 
$query->bindValue(':password',$password); 
+1

* «Вы указали 4 параметра на вашем SQL» * - 1 ... 2 ... 3 ... 4 .. . ** 5 **. –

+0

@ Fred-ii- Вы комментировали 2 раза, но вам нужен только один. – AbraCadaver

+0

@AbraCadaver этот парень не знал разницы между 4 и 5 * lol * или я не был израсходован? http://stackoverflow.com/revisions/41623367/1 –