我对Codeigniter有问题。我无法在视图文件中显示数据。下面给出的是我的模型,控制器和视图文件的代码。我还附上了错误的屏幕截图,以使您更加清楚。
模型
public function get_projects ($userid = '')
{
if (empty($userid)){
return FALSE;
}
$this->db->select('*');
$this->db->from('projects');
$this->db->where('userid', $userid);
$query = $this->db->get();
return $query->row_array();
}
控制器
$uid = $this->session->userdata('user_id');
$data['details']= $this->projects->get_projects($uid);
$this->load->view('design/header', $data);
$this->load->view('design/nav', $data);
$this->load->view('content/dashboard', $data);
$this->load->view('design/footer', $data);
查看
<div class="col-6">
<?php foreach ($details as $row){ echo $row->id; } ?>
</div>
错误
答案 0 :(得分:1)
首先,听起来像您在使用对象表示法$row->id
而不是$row['id']
时想要一个 object 。这意味着您需要使用row()
。这也意味着,由于您将获得1个结果,因此不需要foreach
。
型号:
public function get_project($userid) {
$q = $this->db->get_where('projects', array('userid', $userid));
if ($q->num_rows() !== 1) {
return false;
}
return $q->row();
}
控制器:
$uid = $this->session->userdata('user_id');
if (empty($uid)) {
show_error('user id not set'); // we probably shouldn't have gotten this far
}
$project = $this->projects->get_project($uid);
if ($project === FALSE) {
show_error("no rows in project table for user with id: $uid");
}
$data['details'] = $project;
$this->load->view('design/header', $data);
$this->load->view('design/nav', $data);
$this->load->view('content/dashboard', $data);
$this->load->view('design/footer', $data);
查看:
<p><?php echo $details->id; ?></p>
<p><?php echo $details->someothervar; ?></p>
尽管此代码可能无法解决您的问题(我猜没有为具有该ID的用户提供任何项目,或者会话uid
的设置不正确),它将帮助您调试内容,并且很好练习总是检查num_rows()
,并且变量正在输出您期望的值。我倾向于将所有这些检查全部保留在控制器中。
答案 1 :(得分:1)
这里的问题是模型函数的返回:
output.stdout
仅返回1个数组(或inventory_hostname
也仅返回1个对象)。在视图中迭代时。
不确定您的目的,但是您可以通过或来解决此问题:
return $query->row_array();
return $query->row();
更改为$details->id
答案 2 :(得分:0)
在您的视图页面中,将$row->id;
更改为$row['id']
将会生成结果
<div class="col-6">
<?php foreach ($details as $row){ echo $row['id']; } ?>
</div>