试图获取非对象的属性 - CodeIgniter

Posted

技术标签:

【中文标题】试图获取非对象的属性 - CodeIgniter【英文标题】:Trying to get property of non-object - CodeIgniter 【发布时间】:2011-07-07 16:55:29 【问题描述】:

我正在尝试制作更新表格,即检索所选特定 ID 的数据,并填写表格,以便更新。

当我单击特定条目(在我的例子中为产品)上的编辑时,它会将我带到 edit_product_view,但会为每个条目声明错误“尝试获取非对象的属性”我在表单元素的set_values 中使用的变量。

使用print_r,我得到了正确的关联数组,所以它被正确传递了。

这是我edit_product_view的摘录。

<h2><?php echo $heading; ?></h2>
<hr>
<table id="newproduct">
<?php echo form_open('products/edit/'.$product->id); ?>
<tr>
    <td class="label"><?php echo form_label('Name:');?></td>
    <td><?php echo form_input('prodname', set_value('prodname', $product->prodname));?></td>
</tr>
<tr>
    <td class="label"><?php echo form_label('Product Type:');?></td>
    <td><?php echo form_dropdown('ptname_fk', $product_types, set_value('ptname_fk', $product->ptname_fk));?></td>
</tr>

$product 是包含所有键值对的数组,但由于某种原因我无法填写表格。

提前谢谢你!

【问题讨论】:

我可能一直很厚,弄错了你的问题,请告诉我。 【参考方案1】:

要访问数组中的元素,请使用数组表示法:$product['prodname']

$product-&gt;prodname是对象表示法,只能用于访问对象的属性和方法。

【讨论】:

不起作用。这是 print_r 输出。 'Array ( [0] => stdClass Object ( [id] => 1 [prodname] => Baked Fillo [base_unit] => 500.00 [retail_price] => 50.00 [alert_quantity] => 0.00 [ptname_fk] => 1 [pcname_fk ] => 1 [wname_fk] => 1 [uname_fk] => 1 [uname] => 克 [pcname] => Fillo [ptname] => 成品 [wname] => 成品))' 找到了解决办法!谢谢!我引用 as $product['0'] -> prodname; 啊,是的,根据数组转储,这很有意义。 我正在使用 Laravel,这也适用于那里。非常感谢 Orbit。【参考方案2】:

获取值:

$query = $this->db->query("YOUR QUERY");

然后,对于来自(控制器中)的单行:

$query1 = $query->row();
$data['product'] = $query1;

在视图中,可以使用自己的代码(以上代码)

【讨论】:

【参考方案3】:

在我的例子中,我从一个 XML 文件中循环了一系列对象,但其中一些实例显然不是导致错误的对象。在处理对象之前检查对象是否为空解决了问题。

换句话说,在不检查对象是否为空的情况下,脚本将在任何空对象上出错,错误如下所示。

试图获取非对象的属性

例如:

if (!empty($this->xml_data->thing1->thing2))

   foreach ($this->xml_data->thing1->thing2 as $thing)
   

   

【讨论】:

以上是关于试图获取非对象的属性 - CodeIgniter的主要内容,如果未能解决你的问题,请参考以下文章

laravel 试图获取非对象的属性

试图获取非对象的属性“主机名”

如果显示错误为“试图获取非对象的属性”,如何识别代码中的非对象?

试图获取非对象的属性 [laravel 5.2]

试图获取非对象的属性

我该如何解决“试图获取非对象的属性”