如何解决消息:试图在 Codeigniter 中获取非对象错误的属性?

Posted

技术标签:

【中文标题】如何解决消息:试图在 Codeigniter 中获取非对象错误的属性?【英文标题】:How to solve Message: Trying to get property of non-object error in Codeigniter? 【发布时间】:2018-08-22 13:56:37 【问题描述】:

我在 CodeIgniter 和练习中非常新鲜。我现在正在开发一个简单的 Codeigniter 应用程序,只是为了练习。我在数据库中有银行及其分支机构。我只想显示带有银行名称的分支机构。分支机构正在显示,但在控制器中获取银行时,此错误正在显示。我在 SO links 中尝试了这些,但没有发现任何工作。

"A php Error was encountered

Severity: Notice

Message: Trying to get property of non-object"

in Line Number: 85 and 91

这是我的控制器

function ShowBranchList() 

            $branch_list = $this->FD_Model->get_all_branches();
            $get_bank =   $this->FD_Model->get_bank_by_branch($branch_list->bankid); //This is Line Number 85
            if($branch_list )
            $data = array(
                'pagetitle' => 'Branch List View',
                'branch_list_data' => $branch_list,
                'br_bank' => $get_bank['bank_name'],//This is Line Number 93
            );

        

型号

/*function for getting all branches*/

function get_all_branches() 
    $this->db->order_by( $this->brid, $this->order );
    return $this->db->get( $this->brtable )->result();



/*function for getting banks by branches*/

function get_bank_by_branch( $id ) 
        $this->db->where( $this->bid, $id);
        return $this->db->get( $this->banktable )->row();
    

最后,这是我的观点

 foreach ($branch_list_data as $branch_list) 
         
          <?php echo $branch_list->brname ?>
          <?php echo $br_bank; ?>
        

有人知道这个问题吗?

更新

当我试图查看查询时

echo $this->db->last_query();

结果

SELECT * FROM tbl_bankmaster WHERE bid 为空

$branch_list-&gt;bankid 的值是 null。当我对某些值进行硬编码时,视图页面显示时没有任何错误。

【问题讨论】:

行号 ??发布完整错误 阅读codeigniter.com/userguide3/database/results.html 我已添加该行。请检查我更新的问题。 @SudhiSr 检查我的答案 【参考方案1】:

这样做

$get_bank =   $this->FD_Model->get_bank_by_branch($branch_list[0]->bankid);

'br_bank' => $get_bank[0]->bank_name # this will work maybe

'br_bank' => $get_bank[0]['bank_name']

它的0索引数组所以你需要添加访问孩子的键

【讨论】:

$get_bank = $this-&gt;FD_Model-&gt;get_bank_by_branch($branch_list-&gt;bankid); 有错误。我认为$branch_list-&gt;bankid 为空。那是实际的问题。当我尝试硬编码 bankid 值时,查看页面工作正常。 @SudhiSr 使用这个$branch_list[0]-&gt;bankid 仔细检查 模型中的返回类型有变化吗? 保持原样并更改我提到的控制器代码 我认为您的方法是正确的。现在查询返回值,但 'br_bank' =&gt; $get_bank[0]-&gt;bank_name 有错误。 错误是致命错误:不能使用 stdClass 类型的对象作为数组这一行'br_bank' =&gt; $get_bank[0]-&gt;bank_name 我也试过'br_bank' =&gt; $get_bank[0]['bank_name']。错误是一样的。【参考方案2】:

像这样更改视图中的数据

foreach ($branch_list_data as $branch_list) 
 
   echo $branch_list['brname']; //change your data like this
   echo $br_bank; 

【讨论】:

感谢您的回答。但是我在获取分支时没有问题。从分支机构获取空白时出现错误。在这里,$get_bank = $this-&gt;FD_Model-&gt;get_bank_by_branch($branch_list-&gt;bankid);【参考方案3】:

在Abdulla Nilam 的回答的帮助下,我终于做到了。我刚刚传递了数组中的值,例如

'br_bank' => $get_bank->bank_name

现在视图正在工作。

【讨论】:

【参考方案4】:

get_bank_by_branch($branch_list-&gt;bankid); 这个方法只返回对象。 $get_bank这个变量你通过数组访问,但它是一个对象。

【讨论】:

以上是关于如何解决消息:试图在 Codeigniter 中获取非对象错误的属性?的主要内容,如果未能解决你的问题,请参考以下文章

codeigniter 返回“消息:未定义的属性:Welcome::$load”试图加载帮助程序库

如何在 Codeigniter 中检查是不是设置了会话?

如何解决codeigniter中函数调用的空白页

如何在 Codeigniter 中的数据库中插入数组?

如何在特定时间通过 websocket 发送消息

php/mysql 试图在 codeigniter 中输出单个结果?