如何在我的视图中回显查询结果?

时间:2013-12-31 13:46:32

标签: php mysql codeigniter

我必须说我真的非常愚蠢地理解这种逻辑。我已经玩了近一个小时的测试,我不能按照我想要的方式工作。我要么“试图获取非对象的属性”或“数组到字符串转换”错误。

我的目标是调用SQL查询并将结果存储在一个变量中,然后我将提供给我的视图。在视图中,我希望能够从变量中检索值,例如:$info->email,以获取存储在表格中email列中的值。

我也试过先做$query = $this->db->get('users'); return $query->row();,但这也不起作用。请原谅我的愚蠢,如果你能如此善良并向我解释我如何能够实现上述的目标。测试代码如下。此外,此查询始终只找到1行100%,因为用户id是唯一的。

控制器

$data['info'] = $this->User_m->get_my_info($this->user_id);
$this->load->view('test_v', $data);

模型

private function get_my_info($uid){
    $this->db->select('id, name, email');
    $this->db->where('user_id', $uid);
    return $this->db->get('users'); 
}

查看

<p>Email: <?php echo $info->email ?></p>

4 个答案:

答案 0 :(得分:2)

你应该看看这个。 Generating Query Results。你应该回复一些东西

format      |   object  |   array
-------------------------------------
single      |   row()   |   row_array()
multiple    |   result()|   result_array()

您应该根据您的要求选择格式。当您检索单个用户时,您的功能应该是这样的。

public function get_my_info($uid)
{
    return $this->db
                ->select('id, name, email')
                ->where('user_id', $uid)
                ->get('users')
                ->row();
}

如果将模型函数保密,模型函数应该是公共的,它只能在模型类中访问,而不能在控制器中访问。
您可以启用探查器以查看正在运行的查询 只需将此行添加到控制器构造函数中即可。

$this->output->enable_profiler(true);

答案 1 :(得分:1)

制作模型函数public而不是private

然后在视图中

if ($info->num_rows() > 0) {
    foreach ($info->result() as $row)  {
        echo $row->email;
    }
}

查看更多信息here

答案 2 :(得分:0)

您应该在模型中进行2项更改。

1-功能将是公开的

2- row()回复了。

希望它会对你有所帮助。

<强>模型

public function get_my_info($uid){
    $this->db->select('id, name, email');
    $this->db->where('user_id', $uid);
    return $this->db->get('users')->row();  
}

答案 3 :(得分:0)

你应该使用返回值的函数。

return $this->db->get('users')->row();
return $this->db->get('users')->result();
return $this->db->get('users')->result_array();

且功能应为public而不是private