2015-07-17 3 views
2

Я новичок в php framework Я создал простую форму и хочу вставить ее значение в базу данных, но не смог этого сделать, не знаю, где я ошибаюсь !!!значения в базе данных не вставлены в codeIgniter?

Каждый раз, когда я получаю MySQL, возвращается пустой набор результатов (т. Е. Нулевые строки). я использую CodeIgniter 3 и Mysqli водителей это мой контроллер

<?php 
     //display_errors(on); 
     error_reporting(E_ALL); 

     class Register extends CI_Controller { 

     public function index() { 

     //Validations 

     $rules=array (

       "username"=> array(
        "field"=>"username", 
        "label"=>"Username", 
        "rules"=>"required|max_length[20]|min_length[5]|callback_username_is_taken" 


       ), 

       "password"=> array(
        "field"=>"password", 
        "label"=>"Password", 
        "rules"=>"required|max_length[20]|min_length[6]" 


       ), 

       "pass_conf"=> array(
        "field"=>"pass_conf", 
        "label"=>"Password", 
        "rules"=>"required|matches[password]" 


       ), 
       "email"=> array(
        "field"=>"email", 
        "label"=>"Email", 
        "rules"=>"required|valid_email|callback_is_taken" 


       ) 

    ); 

     //set the rules 

     $this->form_validation->set_rules($rules); 
     //Override the message 
     $this->form_validation->set_message('required','The %s field is empty'); 

     // check to see if form has been submitted 
     if ($this->form_validation->run()!=true) { 
      $this->load->helper('url'); 
      $this->load->view('register'); //Display page 
      $this->load->view('footer'); 
     }else { 
      echo "Donkey Butt"; 

      $form=array(); 
      $form['username']=$this->input->post("username"); 
      $form['password']=md5($this->input->post("password")); 
      $form['email']=$this->input->post("email"); 

      if(self::createUser($form['username'],$form['password'],$form['email'])==true) { 

        //Created User Successfully 
        echo "Success"; 
        //$this->load->view("success",$data); 

      }else{ 
       echo "problem in subbmitting the form"; 
      } 


     } 
     } 

     public function username_is_taken($input) { 





      $query="SELECT * FROM `tbl_usrs` WHERE `username`=? "; 
      $arg=array ($input); 
      $exec=$this->db->query($query,$arg) or die(mysqli_error()); 
      echo $query; 

      if($exec->num_rows() >0) 

      { 
       $this->form_validation->set_message('username_is_taken','Sorry the UserName <b> $input </b> is already taken'); 
       return false; 


      }else { 
       return true; 
      } 

     } 


     public function email_is_taken($input) { 

      $query="SELECT * FROM `tbl_usrs` WHERE `email`=? "; 
      $arg=array ($input); 
      $exec=$this->db->query($query,$arg) or die(mysqli_error()); 
      echo $query; 
      if($exec->num_rows() >0) 

      { 
       $this->form_validation->set_message('email_is_taken','Sorry the email <b> $input </b> is already taken'); 
       return false; 


      }else { 
       return true; 
      } 

     } 

     public function createUser($user,$pass,$email) 
     { 
      $query=" 
       INSERT INTO `tbl_usrs` (`username`,`password`,`email`,`ip`) 
       VALUES (?,?,?,?) 

      "; 
      $arg=array (self::protect($user),self::protect($password),$email,$_SERVER['REMOTE_ADDR']); 

      if($this->db->query($query,$arg)==true) 
      { 
       echo $query; 
       return true; // if added to database 
      }else { 
        return false; 
      } 


     } 

     public function protect($str) { 
      return mysqli_real_escape_string($str); 
     } 
} 

     ?> 
+0

плз дать некоторые ссылки для отладки кода также –

+0

это ошибка, что я получаю Номер ошибки: 1048 Column «имя» не может быть null INSERT INTO 'tbl_usrs' (' username', 'password',' email', 'ip') VALUES (NULL, NULL, 'anmol @ gmail.com', ':: 1') Filename: C : /xampp/htdocs/koopanda/application/controllers/Register.php Номер строки: 132 –

+0

У вас должны быть другие ошибки .... Я отчетливо вижу, что mysqli_real_ escape_string имеет только параметр, который вы должны дать mysqli_ link в качестве первого параметра – Linus

ответ

0

фиксируя mysqli_real_escape_string ($ ул); // excepts два параметра только один дал фиксирующее это сделать код работы