Php 在视图文件codeigniter中显示数据时出现问题
我的Codeigniter有问题。我无法在视图文件中显示数据。下面是我的模型、控制器和视图文件的代码。为了更清晰,我还附上了错误的截图 型号Php 在视图文件codeigniter中显示数据时出现问题,php,codeigniter,codeigniter-3,Php,Codeigniter,Codeigniter 3,我的Codeigniter有问题。我无法在视图文件中显示数据。下面是我的模型、控制器和视图文件的代码。为了更清晰,我还附上了错误的截图 型号 public function get_projects ($userid = '') { if (empty($userid)){ return FALSE; } $this->db->select('*'); $this->db->from('projects');
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>
错误
$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);
首先,当您使用对象表示法
$row->id
而不是$row['id']
时,听起来您想要一个对象。这意味着您需要使用row()
。这也意味着,由于您将得到一个结果,因此不需要为每个设置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);
视图:
虽然此代码可能无法解决您的问题(我猜可能没有具有该id的用户的项目,或者会话uid
设置不正确),但它将帮助您调试事情,并且始终检查num_rows()
以及您的变量是否输出了您所期望的内容,这是一个很好的做法。我倾向于将所有这些检查都保存在控制器中。这里的问题是模型函数的返回:
return$query->row_array()代码>只返回1个数组(或返回$query->row();
也只返回1个对象)。当您在视图中迭代它时
不确定您的目的,但您可以通过或:
- 不要在视图中使用迭代,只需使用变量
$details->id
- 更改
return$query->row_数组()
toreturn$query->result()代码>
在您的视图页面中更改$row->id
到$row['id']
它将生成结果
<div class="col-6">
<?php foreach ($details as $row){ echo $row['id']; } ?>
</div>
您是否尝试过检查它是否为关联数组?return$query->row_array()代码>以关联数组的形式返回数据的SEEP。它是否有效?不起作用,然后用试用版更新您的问题;)。同时更新显示var\u dump($row)结果的问题代码>此外,在这种情况下,您还可以使用名为xdebug
的工具。它不起作用。我还尝试将模型文件更改为if($query->num_rows()==1){return$query->row();}否则{return$query->result();}运气不好。我想我在你的观点上犯了一个非常愚蠢的错误,只需将var\u dump($row)
放在它的第一行,从中找出变量的类型。(调试后,只需将其删除)。关于var\u dump()
看看。是的,我发现了问题,现在明白了。非常感谢。谢谢亚历克斯的回复。通过这件事我知道了一些重要的事情。