1

我正在尝试使用 CodeIgniter 学习 MVC 方法,但我一直在尝试将 SQL 查询的结果显示到视图中。我正在使用方法绑定方式,因为我听说它在编写 SQL 查询时转义变量是安全的。

这是模型:

public function getuser_id()
{
    $this->db->select('id')->from('users')->where('email', $this->session->userdata('email'));
    $query = $this->db->get();
}

这是控制器:

public function members()
{
    if ($this->session->userdata('is_logged_in'))
    {
        $data['title'] = 'Members Page';
        $this->load->model('model_users');
        $data['uid'] = $this->model_users->getuser_id();
        $this->load->view('members', $data);
    }
    else 
    {
        redirect('main/restricted');
    }
}

视图就是这样echo $uid;。我要做的就是在屏幕上打印用户 ID。我认为问题在于getuser_id()功能。探查器说查询正在页面上执行,但我没有看到结果。数据肯定存在于数据库中。

任何帮助将不胜感激!

4

1 回答 1

2

您的代码存在一些问题。

首先,不是直接在模型中访问会话。您应该在控制器中访问它,并将数据作为 getuser_id() 函数的参数传递给模型。

其次,您正在进行查询,但没有从中返回数据。为此,您需要修改以下行:

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

成为以下之一,具体取决于您的偏好:

$query = $this->db->get()->result(); //returns results as an object $query = $this->db->get()->result_array(); // returns results as an array

在此处返回结果的更多信息。 http://ellislab.com/codeigniter/user-guide/database/results.html

第三,您不会将模型中的任何数据传递回控制器。您需要return $your_data在模型函数的末尾添加一个。

更新模型:

public function getuser_id($user_email)
{
    $this->db->select('id')->from('users')->where('email', $user_email);
    $query = $this->db->get()->result_array();

    return $query; // Don't forget to return your results!

}

这是控制器:

public function members()
{
    if ($this->session->userdata('is_logged_in'))
    {
        $data['title'] = 'Members Page';
        $this->load->model('model_users');
        $user_email = $this->session->userdata('email');
        $data['uid'] = $this->model_users->getuser_id($user_email);
        $this->load->view('members', $data);
    }
    else 
    {
        redirect('main/restricted');
    }
}
于 2013-03-22T04:07:44.373 回答