Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
输出未显示CodeIgniter中SQL查询的结果_Sql_Codeigniter - Fatal编程技术网

输出未显示CodeIgniter中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

我正在尝试使用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');
    }
}
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为我指明了正确的方向。非常感谢你们。我只是通过做程序式的练习来掌握这一点:)