这是我在模型中的功能
public function get_user($username, $password) {
$p = md5($password);
$this->db->select('userid, userfullname, useraddress');
->from('user');
->where('username', $username);
->where('userpassword', $p);
$q = $this->db->get();
if ($q->num_rows() == 1){
return $q->row();
}
else ($q->num_rows() > 1){
return $q->result_array();
}
}
这是我在控制器中的代码,我想将$ q的值返回给result [] $这 - >负载>模型(' User_model&#39);
$username = $this->post('username');
$password = $this->post('password');
$token = $this->post('token');
$result = [];
if($this->security->xss_clean($username, TRUE) && $this->security->xss_clean($password, TRUE)) {
$result = $this->User_model->get_user($username, $password);
}
我有错误无法使用stdClass类型的对象作为数组
答案 0 :(得分:0)
我确信您在每一行中都不需要;
来制作链式方法
$this->db->select('userid, userfullname, useraddress')
->from('user')
->where('username', $username)
->where('userpassword', $p);
$q = $this->db->get();
或者更好地结合所有
$q = $this->db->select('userid, userfullname, useraddress')
->from('user')
->where('username', $username)
->where('userpassword', $p)
->get();
答案 1 :(得分:0)
如果您在控制器中执行此操作?
$result = []; // $result is set as empty array
if($this->security->xss_clean($username, TRUE) && $this->security->xss_clean($password, TRUE)) {
// notice the []
$result[] = $this->User_model->get_user($username, $password);
}
或者更好的是:
$this->db->select('userid, userfullname, useraddress')
->where('username', $username)
->where('userpassword', $p)
$q = $this->db->get('user');
if ($q->num_rows() == 1) {
return array($q->row());
}
else($q->num_rows() > 1) {
return $q->result_array();
}
// in controller
$result = [];
if($this->security->xss_clean($username, TRUE) && $this->security->xss_clean($password, TRUE)) {
$result = $this->User_model->get_user($username, $password);
}
答案 2 :(得分:0)
首先,在两个输入都是唯一的函数中,为什么你会期望超过1个用户出现?其次,我必须假设此函数与登录有某种关联,因此如果没有返回结果,它应该返回并返回错误。第三,你从模型中返回两种不同的类型,row()
作为对象,result_array
显然是一个数组。
然后,您通常会将返回的row()
应用于数组$result[]
。奇怪的。让我们解决这个问题......
public function get_user($ username,$ password) {
$p = md5($password);
$this->db->select('userid, userfullname, useraddress')
->from('user')
->where('username', $username)
->where('userpassword', $p);
$q = $this->db->get();
if ($q->num_rows() == 1) {
return $q->row_array();
} else {
return false;
}
}
现在,您将始终返回一个数组,而不是一个带有row_array()
的对象,或者一个空数组失败(使用这些详细信息找到多于或少于一个用户)。说实话,用户可能拥有相同的名称和密码,接近0!
所以现在当你这样分配它时:
$result = [];
if($this->security->xss_clean($username, TRUE) && $this->security->xss_clean($password, TRUE)) {
$result = $this->User_model->get_user($username, $password);
}
您必须明白,要获得$result
的值,您必须执行此操作:
$result['userid']
如果模型返回false,可能会导致通知,因此您必须检查并在获取值之前传播相应的错误!