1

我是CI的新手,我已经为此工作了几个小时没有成功,请帮忙!我正在尝试通过从数据库中检索信息并将其显示在视图中(使用 USERID)来生成用户配置文件。我遇到了未定义的变量错误和尝试从非对象错误中获取属性。这是我的代码:

模型:

 public function my_data()
{
  $userid = $this->session->userdata('userid');

  $data = array();
  $this->db->select('*');
  $this->db->from('user_profile');
  $this->db->where('userid', $userid);
  $query = $this->db->get();

  return $query->result();
  }

控制器:

    public function profile()
{

         $data['query'] = $this->user_model->my_data();



         $this->load->view('header_loggedin');
        $this->load->view('sidebar_left');
        $this->load->view('user/user_profile', $user);
        $this->load->view('footer');
}

看法:

<div class="control-group">
 <i class="icon-user"></i>
            Name: <?php echo $row->name; ?>     
</div>
    <div class="control-group">
 <i class="icon-home"></i>
            Location: <?php echo $data->location;?> 
</div>
        <div class="control-group">
 <i class="icon-briefcase"></i>
            Occupation: <?php echo $data->occupation;?> 
</div>

提前非常感谢,我觉得我已经尝试了一切!

4

2 回答 2

0

嗨,作为 CI 新手,您将面临一些问题,但稍后您会喜欢它这里有一些您做错的简单事情

模型

public function my_data()
{
  $userid = $this->session->userdata('userid');

  $data = array();
  $this->db->select('*');
  $this->db->from('user_profile');
  $this->db->where('userid', $userid);
  $query = $this->db->get();

  //this will return multiple rows or object of arrays
  //return $query->result();
  // you need to send only single row
    return $query->row();
  }

控制器

public function profile()
{
         // in data array key name should be same which you will pass to view    
         $data['row'] = $this->user_model->my_data();



         $this->load->view('header_loggedin');
        $this->load->view('sidebar_left');
        $this->load->view('user/user_profile', $data);
        $this->load->view('footer');
}

看法

<div class="control-group">
 <i class="icon-user"></i>
            Name: <?php echo $row->name; ?>     
</div>
    <div class="control-group">
 <i class="icon-home"></i>
            Location: <?php echo $row->location;?> 
</div>
        <div class="control-group">
 <i class="icon-briefcase"></i>
            Occupation: <?php echo $row->occupation;?> 
</div>

有关更多信息,请阅读 CI 用户指南,您将从那里了解很多内容CI 用户指南

于 2013-05-05T04:10:54.630 回答
0

这里将$user 更改为 $data

public function profile()
{

         $data['result'] = $this->user_model->my_data();



         $this->load->view('header_loggedin');
        $this->load->view('sidebar_left');
        $this->load->view('user/user_profile', $data);
        $this->load->view('footer');
}

那么如果您的查询只返回一行,您可以使用

return $query->row_array();

代替

return $query->result();

鉴于您现在可以使用

Name: <?php echo $result['name']; ?>
Location: <?php echo $result['location'];?> 
Occupation: <?php echo $result['occupation'];?> 
于 2013-05-05T04:12:52.957 回答