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

时间:2012-11-15 12:14:23

标签: php arrays codeigniter

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

代码如下。

控制器类代码

 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是查询数据库所需的两个值。请帮忙

4 个答案:

答案 0 :(得分:1)

您的代码中存在错误。正确的控制器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..

}

答案 1 :(得分:0)

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

在Controller中使用:

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

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

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

希望它有所帮助。

答案 2 :(得分:0)

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

控制器:

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;
  }

} 

答案 3 :(得分:0)

我遇到了同样的问题,而我发现这样做的唯一方法显然是在控制器中将数组json_encode()并在模型中json_decode。从我这里开始,它就像是一种魅力。 祝你好运!