输出未显示CodeIgniter中SQL查询的结果
我正在尝试使用CodeIgniter学习MVC方法,并且我一直在尝试向视图显示SQL查询的结果。我使用的是方法绑定方式,因为我听说在编写SQL查询时使用转义变量是安全的 模型如下:输出未显示CodeIgniter中SQL查询的结果,sql,codeigniter,Sql,Codeigniter,我正在尝试使用CodeIgniter学习MVC方法,并且我一直在尝试向视图显示SQL查询的结果。我使用的是方法绑定方式,因为我听说在编写SQL查询时使用转义变量是安全的 模型如下: public function getuser_id() { $this->db->select('id')->from('users')->where('email', $this->session->userdata('email')); $query = $t
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');
}
}
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');
}
}
该视图只执行echo$uid代码>。我只想在屏幕上打印用户ID。我认为问题在于getuser\u id()
函数。探查器说查询正在页面上执行,但我没有看到结果。数据库中确实存在数据
任何帮助都将不胜感激 您的代码有一些问题
首先,不是直接在模型中访问会话。您应该在控制器中访问它,并将数据作为getuser_id()函数的参数传递给模型
其次,您正在进行查询,但没有从中返回数据。为此,您需要修改行:
$query=$this->db->get()代码>
根据您的喜好,您可以选择以下选项之一:
$query=$this->db->get()->result()//将结果作为对象返回
$query=$this->db->get()->result_array();//以数组形式返回结果
更多关于返回结果的信息,请点击此处。
第三,您不会将任何数据从模型传递回控制器。您需要在models函数的末尾添加一个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');
$data['uid'] = $this->model_users->getuser_id();
$this->load->view('members', $data);
}
else
{
redirect('main/restricted');
}
}
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');
}
}
而不是直接在模型中访问会话。您应该在控制器中访问它,并将其作为getuser\u id()
函数的参数传递给模型。您好@Jeemusu,感谢您的快速响应。我已经更新了代码,将会话变量作为参数从控制器传递到模型。代码没有错误,只是没有显示结果。数据库是从配置文件中自动加载的,因此它肯定在工作,但实际上没有显示……在包含return$query之后;在模型中,我收到一个“Message:Array to string conversion”错误getuser_id()
函数应该使用get()->row()
获取结果,因为应该只有一个结果,然后只返回id
<代码>返回$query->id代码>哈哈,太棒了@SeainMalkin!成功了,谢谢你!也感谢@Jeemusu为我指明了正确的方向。非常感谢你们。我只是通过做程序式的练习来掌握这一点:)