试图在[重复]中获取非对象的属性

Posted

技术标签:

【中文标题】试图在[重复]中获取非对象的属性【英文标题】:Trying to get property of non-object in [duplicate] 【发布时间】:2011-08-19 00:19:14 【问题描述】:

在控制页面上:

<?php
  include 'pages/db.php'; 
  $results = mysql_query("SELECT * FROM sidemenu WHERE `menu_id`='".$menu."' ORDER BY `id` ASC LIMIT 1", $con);
  $sidemenus = mysql_fetch_object($results);
?>

在查看页面上:

<?php foreach ($sidemenus as $sidemenu): ?>
  <?php echo $sidemenu->mname."<br />";?>
<?php endforeach; ?>

错误是:

注意:试图在第 22 行的 C:\wamp\www\phone\pages\init.php 中获取非对象的属性

你能解决它吗?我不知道发生了什么。

【问题讨论】:

$sidemenu 不是一个对象。 var_dump() 看看它是什么。 #22 是&lt;?php echo $sidemenu-&gt;mname."&lt;br /&gt;";?&gt; 你应该检查你的mysql查询没有出错。 $menu 可能是一个空字符串。这将导致您的 $sidemenu 不是对象。 查询运行良好并返回数据。 【参考方案1】:

$sidemenu 不是object,所以你不能在它上面调用方法。可能没有发送到您的view,或者$sidemenus 为空。

【讨论】:

mysql_fetch_object 不是返回对象集吗? @Gerelt 不,我建议你再次检查manual。【参考方案2】:

查看mysql_fetch_object() 的手册。它返回一个对象,而不是一个对象数组。

我猜你想要这样的东西

$results = mysql_query("SELECT * FROM sidemenu WHERE `menu_id`='".$menu."' ORDER BY `id` ASC LIMIT 1", $con);

$sidemenus = array();
while ($sidemenu = mysql_fetch_object($results)) 
    $sidemenus[] = $sidemenu;


我可以建议你看看 PDO。 PDOStatement::fetchAll(PDO::FETCH_OBJ) 做了你认为 mysql_fetch_object() 做的事情

【讨论】:

【参考方案3】:

你的错误

注意:试图在第 22 行的 C:\wamp\www\phone\pages\init.php 中获取非对象的属性

您的评论

@22 是&lt;?php echo $sidemenu-&gt;mname."&lt;br /&gt;";?&gt;

$sidemenu 不是对象,您正在尝试访问其属性之一。

这就是你的错误的原因。

【讨论】:

【参考方案4】:
<?php foreach ($sidemenus->mname as $sidemenu): ?>
<?php echo $sidemenu ."<br />";?>

$sidemenus = mysql_fetch_array($results);

然后

<?php echo $sidemenu['mname']."<br />";?>

【讨论】:

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

如何处理试图在laravel中获取非对象错误的属性?

错误:试图在 Laravel 中获取属性 ID 错误(非对象)

试图在laravel中获取非对象的属性'expiry_date'

试图在 Laravel 4 中获取非对象的属性

如何修复“试图获取非对象的属性”Laravel 5

消息:试图在 Codeigniter 3 中获取非对象的属性