【问题标题】:Message: Trying to get property of non-object in Codeigniter消息:试图在 Codeigniter 中获取非对象的属性
【发布时间】:2014-03-12 14:23:28
【问题描述】:

我的模型页面中有此代码:

 public function getAll($researcherpk){
 $this->db->select('*');
 $this->db->from('research');
 $this->db->join('researcher', 'researcher = lastname');
 $this->db->where('researcherpk', $researcherpk); 
 return $this->db->get()->row_array();

但是当我在我的视图页面上使用它时

Age: <?php echo $data['age'];?>        // this work

<?php   foreach ($data as $v){ ?>          //this has an error

  <tr>
      <td><?php echo $v->title?></td>
      <td><?php echo $v->track_records?></td>
  </tr>
<?php } ?>

我得到错误:

Message: Trying to get property of non-object

在我的控制器页面中:

 public function researcher($researcherpk){

 $this->load->model('ResearchModel');

 $result['data'] = $this->ResearchModel->getAll($researcherpk);
 $this->load->view('researcher',$result);

 }

您认为这里的问题是什么?我的替代解决方案或更改是什么?

【问题讨论】:

  • 对不起,我该怎么做 var_dump($data);?
  • 没关系,我发现错了!检查我的答案:)

标签: php codeigniter


【解决方案1】:

将您的退货更改为:

return $this->db->get()->result_array();

然后尝试使用$v['title']$v['track_records']

<?php foreach ($data as $v): ?>
  <tr>
    <td><?php echo $v['title']?></td>
    <td><?php echo $v['track_records']?></td>
  </tr>
<?php endforeach; ?>

查看the codeigniter docs 了解更多信息。

result_array()

该函数将查询结果作为纯数组返回

这就是你想要的。

你将它与:

row_array():

此函数返回单个结果行。如果您的查询多于一行,则仅返回第一行。

这不是你想要的。

【讨论】:

  • $data 不是多维数组。
  • 谢谢,我只是仔细研究了一下。我将编辑我的答案@RocketHazmat
【解决方案2】:

您正在调用row_array,这意味着$data 是单行的数组$data['age'] 有效,因为 age 是行中的一个字段。

您可以foreach($data as $v),但这只会循环该特定行中的字段

你可以做echo $data['title']$data 不是多维数组。

如果您想要多行,请使用return $this-&gt;db-&gt;get()-&gt;result_array();。然后你可以遍历行:

foreach ($data as $v){
    echo $v['age'];
    echo $v['title'];
}

【讨论】:

    【解决方案3】:

    它是一个数组而不是一个对象所以:

    改变这个:

      <td><?php echo $v->title?></td>
      <td><?php echo $v->track_records?></td>
    

    到这里:

      <td><?php echo $v['title']; ?></td>
      <td><?php echo $v['track_records']; ?></td>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-19
      • 2016-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-25
      相关资源
      最近更新 更多