只获取数据库的个人记录,而不是所有记录

时间:2013-07-21 15:35:40

标签: mysql codeigniter login

当您登录我的网站时,您将直接转到您的个人资料页面。因此,您可以看到您的姓名,电话,电子邮件等。但是当我登录我的网站时,我会被定向到我的个人资料页面,但我获得了我的数据库中每个用户的所有数据。所以我得到了每个用户的名字,每个用户的电话等等。我只想获取登录用户的数据。我怎样才能做到这一点? 我做了一些思考,想出了where userID = ID of the user HERE 但我不知道在哪里可以获得该用户的ID。登录时我正在开始会话,那么我是否需要在会话中存储登录的用户ID?或者不安全吗?

我正在学习和使用CodeIgniter,所以我是以MVC模式进行的。

我登录并设置会话的控制器

if($query){
    $data = array(
             'username' => $this->input->post('loginEmail'),
             'is_logged_in' => true
            );
    $this->session->set_userdata($data);

控制器

if($logged_in){
    //if the user is logged in 
    $this->load->model('profile_model');

    if($query = $this->profile_model->userInfo()){
        $data['records'] = $query;
            $data['content'] = 'profile_view';
            $this->load->view('templates/template', $data);
    }
}

模型

class Profile_model extends CI_Model{

    function userInfo(){
        $query = $this->db->get('tbl_users');
        return $query->result();
    }
}

查看我想要显示数据的位置

if(isset($records)){
    foreach($records as $row){
        echo $row->username;
        echo $row->cellphone;
    }
}

1 个答案:

答案 0 :(得分:1)

您缺少的只是模型中的WHERE语句。作为WHERE语句的参数,您可以使用包含电子邮件地址的会话变量(假设您的数据库表将电子邮件存储在名为“username”的字段中:

class Profile_model extends CI_Model{

    function userInfo(){

        $this->db->where('username', $this->session->userdata('username'));

        $query = $this->db->get('tbl_users');

    return $query->result();

    }

}

或者您可以从控制器将电子邮件/用户名传递给模型:

if($logged_in){
    //if the user is logged in 
    $this->load->model('profile_model');
    $username = $this->session->userdata('username');

    if($query = $this->profile_model->userInfo($username)){
        $data['records'] = $query;
            $data['content'] = 'profile_view';
        $this->load->view('templates/template', $data);
    }
}

然后在你的模型中:

class Profile_model extends CI_Model{

    function userInfo($username){

        $this->db->where('username', $username);

        $query = $this->db->get('tbl_users');

    return $query->result();

    }

}

我不知道您的列在数据库中的名称是什么,或者我可能更精确。

如果数据库中的用户名与电子邮件地址不同,请将模型中的行更改为:

$this->db->where('email', $username);

希望这有帮助!