我试图通过控制器类中的函数传递数组,并从模型内的类中的另一个函数中检索它,但是无法检索这些值。请指教。
代码如下。
控制器类代码
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是查询数据库所需的两个值。请帮忙
答案 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。从我这里开始,它就像是一种魅力。 祝你好运!