首页 文章

在codeigniter中将数组从控制器传递到模型

提问于
浏览
3

我试图通过控制器类中的函数传递数组,并从模型内的类中的另一个函数检索它,但无法检索值 . 请指教 .

代码如下 .

控制器类代码

class home extends CI_Controller {

function __construct() {
    parent::__construct();
    $this->load->helper('url');
}

function index() {
    $this->load->view('loginview');
}

function login() {
    $parameters = array(
        '$uname' => $this->input->post('uname'),
        '$passwords' => $this->input->post('password')
    );

    $this->load->model('loginModel');
    $validate = $this->loginModel->validateuser($parameters);

    if(count($validate)== 1){
        echo "Logged in";
    }
    else
    {
        //redirect('home/index');
        echo "dasad";
    }


}

}

模型类代码

class loginModel extends CI_Model {

function __construct() {
    parent::__construct();
}

public function validateuser($parameters) {

        $uname = $parameters['uname'];
        $pass = sha1($mem['pass']);



    $query = $this->db->query("select * from user where username = '$uname' and password = '$pass'");
    $result = $query->result_array();
    return $result;

}

}

变量$ uname和$ pass是查询数据库所需的两个值 . 请帮忙

3 回答

  • 0

    您的代码中存在错误 . 正确的控制器login()方法:

    function login() {
    
        // you don't need '$' sign
        $parameters = array(
            'name' => $this->input->post('uname'),
            'pass' => $this->input->post('password')
        );
    
        $this->load->model('loginModel');
        $validate = $this->loginModel->validateuser($parameters);
    
        // stuff..
    
    }
    

    和模型loginModel()方法:

    public function validateuser($parameters) {
    
        $uname = $parameters['name'];
        $pass = sha1($parameters['pass']); // and second error was here
    
        // stuff..
    
    }
    
  • 0

    数组键字符串在模型和控制器类中是不同的 . 以下是可能的修复方法 .

    在Controller中使用此:

    $parameters = array(
            'uname' => $this->input->post('uname'),
            'passwords' => $this->input->post('password')
        );
    

    其次在你的模型中 . 用它来获取参数 .

    $uname = $parameters['uname'];
      $pass = sha1($parameters['passwords']);
    

    希望能帮助到你 .

  • 1

    我看到你的答案已经修复但我只想给你一个替代方法 . 它更安全,更短:

    控制器:

    function login() {
    
        $this->load->model('loginModel');
        $validate = $this->loginModel->validateuser();
    
        if($validate ){
            echo "Valid User";
        } else{
            echo "Invalid User";
        }
    }
    

    模型:

    public function validateuser() {
    
     $query = $this->db->query("select * from user where username = ? and password = ?",array($this->input->post('uname'),sha1($this->input->post('password'))));
       if($query->num_rows() == 1){
          return true;
       }else{
         return false;
      }
    
    }
    

相关问题