我正在尝试使用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()
功能。分析器说该查询正在页面上执行,但我没有看到结果。数据肯定存在于数据库中。
任何帮助将不胜感激!
答案 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');
}
}