我想在Code Igniter的set_userdata()函数中添加数据库中的用户数据,但我的代码无效。当我显示userdata()时,数据库中的所有字段都没有显示。你能查一下错了吗?这里的新闻代码点燃:(
if($this->form_validation->run()){
$this->load->model('model_users');
$userinfo=$this->model_users->get_user_info();
$data = array(
'empID' => $userinfo->empID,
'email' => $userinfo->email,
'emp_name' => $userinfo->emp_name,
'address' => $userinfo->address,
'position' => $userinfo->position,
'usertype' => $userinfo->usertype,
'is_logged_in' => 1
);
$this->session->set_userdata($data);
redirect('main/home');
} else{
$this->login();
}
这是模型中的代码
public function can_log_in(){
$this->db->where('email', $this->input->post('email'));
$this->db->where('password', md5($this->input->post('password')));
$query = $this->db->get('employee');
if($query->num_rows() == 1){
return true;
} else {
return false;
}
}
public function get_user_info(){
$query = $this->db->get_where('employee',array('email'=> $this->input->post('email'),'password'=> md5($this->input->post('password'))));
foreach ($query->result() as $userinfo)
{
echo $userinfo->empID;
echo $userinfo->email;
echo $userinfo->emp_name;
echo $userinfo->address;
echo $userinfo->position;
echo $userinfo->usertype;
}
return $userinfo;
}
答案 0 :(得分:0)
如果您从查询中获取任何行,则需要从模型中传递$query->result
。 afterforech循环变量$userinfo
为空,因此返回nothig
<强>模型强>
function get_user_info(){
$query = $this->db->get_where('employee',array('email'=> $this->input->post('email'),'password'=> md5($this->input->post('password'))));
$num = $query->num_rows();
if($num>0){
return $query->result();
}else{
return FALSE;
}
这里使用foreach循环来提取值
<强>控制器强>
$user=$this->model_users->get_user_info();
if(!empty($user)){
foreach($user as $userinfo){
$data = array(
'empID' => $userinfo->empID,
'email' => $userinfo->email,
'emp_name' => $userinfo->emp_name,
'address' => $userinfo->address,
'position' => $userinfo->position,
'usertype' => $userinfo->usertype,
'is_logged_in' => 1
);
}
$this->session->set_userdata($data);
}
<强>更新强>
<强> MODEL 强>
function get_user_info() {
$this->db->select('*');
$this->db->from('employee');
$this->db->where('email',$this->input->post('email'));
$this->db->where('password',md5($this->input->post('password')));
$query=$this->db->get();
$num = $query->num_rows();
if($num>0){
return $query->row();
}else{
return FALSE;
}
}
<强>控制器强>
$user=$this->model_users->get_user_info();
if(!empty($user)){
$data = array(
'empID' => $userinfo->empID,
'email' => $userinfo->email,
'emp_name' => $userinfo->emp_name,
'address' => $userinfo->address,
'position' => $userinfo->position,
'usertype' => $userinfo->usertype,
'is_logged_in' => 1
);
$this->session->set_userdata($data);
}
答案 1 :(得分:0)
尝试创建一个新数组,而不是存储在$ data中。
$sess_array = array();
$sess_array = array(
'id' => $user_info->admin_id,
'username' => $user_info->username,
'password' => $user_info->password,
'last_name' => $user_info->last_name,
'first_name' => $user_info->first_name,
'profile_img' => $user_info->img,
);
$this->session->set_userdata('logged_in', $sess_array);
然后你可以这么称呼 -
$sess_data = $this->session->userdata('logged_in');
echo $sess_data['profile_img']; //This holds the result similarly other values.