登录不会';t返回正确的用户ID


Logging-in doesn't return correct user ID

当我登录时,它不会返回属于用户名的正确user_id。相反,我得到了这个错误消息:

错误号:1054"where clause"SELECT*FROM(user)where 0="user_id"AND 1 IS NULL中的未知列"0"文件名:C:''Xampp''htdocs''codeigniter cms''system''database''DB_driver.php行号:330

如何获得属于登录用户名的正确user_id

用户库是自动加载的。

<?php
class User {
    public function __construct() {
        $this->CI =& get_instance();
    }
    public function getUserID($user_id) {
        if ($this->CI->session->userdata('username')) {
            return $this->CI->db->get_where('user', array('user_id', $user_id));
        } else {
            return false;
        }
    }
}

控制器

public function index() {
    $this->document->setTitle($this->lang->line('heading_title'));
    $data['text_logged'] = sprintf($this->lang->line('text_logged'), '<strong>' . $this->user->getUsername() . '</strong>');
    $data['user_id'] = $this->user->getUserID($user_id);
    $data['logout'] = site_url('admin/common/logout');
    return $this->load->view('common/dashboard', $data);
}

我相信你的意思是:

 return $this->CI->db->get_where('user', array('user_id'=> $user_id));

您现在在数组中传递2个值,而不仅仅是一个键=>值对

我现在可以获得正确的用户id了。当我登录时。

我不得不在用户库的登录验证区域添加一个函数。

我把它添加到设置会话中,现在可以获得正确的id。

这里添加了什么

$this->CI->db->select('user_id');
$this->CI->db->where('username', $this->CI->input->post('username'));
$query = $this->CI->db->get('user');
$row = $query->row(); 
$data = array(
'isLogged' => TRUE,
'user_id' => $row->user_id, 
'username' => $this->CI->input->post('username')
);
$this->CI->session->set_userdata($data);

用户库

<?php
class User {
    public function __construct() {
       $this->CI =& get_instance();
    }

   public function login() {
       $this->CI->load->library('password');
       $this->CI->db->select('password');
       $this->CI->db->where('username', $this->CI->input->post('username'));
       $query = $this->CI->db->get('user');
       $row = $query->row();
       if ($this->CI->password->validate_password($this->CI->input->post('password'), $row->password)) {
       $this->CI->db->select('user_id');
       $this->CI->db->where('username', $this->CI->input->post('username'));
       $query = $this->CI->db->get('user');
       $row = $query->row(); 
       $data = array(
       'isLogged' => TRUE,
       'user_id' => $row->user_id,
       'username' => $this->CI->input->post('username')
       );
       $this->CI->session->set_userdata($data);
       return true;
       } else {
       $this->CI->session->set_flashdata('error', 'Incorrect Username Or Password! Please Try Again');
       return false;
       }
   }
   public function logout() {
   $this->CI->session->sess_destroy();
   }
   public function getUsername() {
   return $this->CI->session->userdata('username');
   }
   public function getUserID() {
   return $this->CI->session->userdata('user_id');
   }

}