输出CodeIgniter中的SQL查询结果未显示

时间:2013-03-22 04:01:20

标签: sql codeigniter

我正在尝试使用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()功能。分析器说该查询正在页面上执行,但我没有看到结果。数据肯定存在于数据库中。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分: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');
    }
}