【问题标题】:Trying to get property of non-object error during json encode尝试在json编码期间获取非对象错误的属性
【发布时间】:2012-07-18 18:55:29
【问题描述】:

这是我正在尝试编写的一段代码。在这里,我想从数据库中检索数据,将其存储到一个数组中,然后对其进行 json_ecode 并将其设置为输出。但我不断收到此错误“尝试获取非对象的属性”。

这里是代码

$data['query'] = $this->db->get('forms');

foreach($data['query'] as $row)
{
    $forms_array[] = array(
        $row->id 
    );
}   

$return=json_encode($forms_array);
$this->output->set_output($return); 

【问题讨论】:

  • 究竟是哪一行代码导致了错误输出?
  • 听起来 $row 不是一个对象,与您的 json_encode 调用无关。您是否已经倾倒了 $row 的值以查看它的确切含义?即 DB 查询是否有效,或者您是否获得了一些其他值(false、NULL 等)表示查询失败或空集?
  • 你是对的..m 在页面末尾得到一些 id:null 的东西
  • 但是如果我把这个条件 if($data['query']->num_rows() > 0) 它返回 true

标签: php json codeigniter


【解决方案1】:

您应该首先检查您的查询是否确实返回了行。其次,您想在foreach 中访问$data['query']->result()

if($data['query']->num_rows() > 0){
    // The query returned rows...
    foreach($data['query']->result() as $row){
        $forms_array[] = array(
            $row->id 
        );
    } 
}

【讨论】:

  • 是的,刚刚检查了该条件..它获得了超过 0 条记录
  • @user1212207:请参阅上面的编辑。您想在foreach 中访问$data['query']->result()
  • @user1212207:对不起,我忘了将我的编辑添加到代码示例中。它现在就在那里。
  • @user1212207:很高兴它有帮助!
  • @user1212207 仍然将 form_array 初始化为空数组。如果没有找到记录,你会得到 undefined forms_array........
【解决方案2】:

您应该在 foreach 之外声明 $forms_array[]。

【讨论】:

  • 虽然是一个很好的建议,但这更像是一个评论而不是一个答案。
猜你喜欢
  • 2016-04-15
  • 2018-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-22
  • 2016-09-10
  • 2018-09-26
相关资源
最近更新 更多