Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.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
Php 在视图文件codeigniter中显示数据时出现问题_Php_Codeigniter_Codeigniter 3 - Fatal编程技术网

Php 在视图文件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');

我的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>

错误

$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_数组()
    to
    return$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()
看看。是的,我发现了问题,现在明白了。非常感谢。谢谢亚历克斯的回复。通过这件事我知道了一些重要的事情。