试图在[重复]中获取非对象的属性
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 是<?php echo $sidemenu->mname."<br />";?>
你应该检查你的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 是
<?php echo $sidemenu->mname."<br />";?>
$sidemenu
不是对象,您正在尝试访问其属性之一。
这就是你的错误的原因。
【讨论】:
【参考方案4】:<?php foreach ($sidemenus->mname as $sidemenu): ?>
<?php echo $sidemenu ."<br />";?>
或
$sidemenus = mysql_fetch_array($results);
然后
<?php echo $sidemenu['mname']."<br />";?>
【讨论】:
以上是关于试图在[重复]中获取非对象的属性的主要内容,如果未能解决你的问题,请参考以下文章
错误:试图在 Laravel 中获取属性 ID 错误(非对象)