【问题标题】:Adding the all the data from the database in the set_userdata function in Code Igniter在 Codeigniter 的 set_userdata 函数中添加数据库中的所有数据
【发布时间】:2015-09-25 08:37:34
【问题描述】:

我想在 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;
}

【问题讨论】:

    标签: php database codeigniter model-view-controller


    【解决方案1】:

    如果你从查询中得到任何行,你需要从你的模型中传递$query->result。 afterforech 循环变量$userinfo 为空,因此它不返回任何内容

    型号

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

    更新

    型号

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

    【讨论】:

    • 会话未设置,因此意味着用户返回 empy。可能是什么问题?
    • 在实现我的代码后你能设置set_userdata??
    • no set_userdata 未设置。因为我无法进入我的主页:(@Saty
    • okk print_r($user); 在你的控制器中检查它的值
    • 我卡在一个空白页面中,它不显示任何内容。 @Saty
    【解决方案2】:

    尝试创建一个新数组而不是存储在 $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.
    

    【讨论】:

    • 在您的模型中-$this->db->get('employee')->row(); 您也应该在 userinfo 部分中获得类似的信息。
    • 您是否检查过您传递的数组用户信息?是否正在打印值?
    • 我没有检查。它有点复杂。我只是 CI 的初学者 :(
    猜你喜欢
    • 2015-10-25
    • 1970-01-01
    • 1970-01-01
    • 2018-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-17
    • 1970-01-01
    相关资源
    最近更新 更多