试图获取非对象的属性

时间:2011-05-05 02:06:25

标签: php mysql object foreach fetch

控制页面上的

<?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中获取非对象的属性

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

4 个答案:

答案 0 :(得分:30)

查看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()要执行的操作

答案 1 :(得分:12)

您的错误

  

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

您的评论

  

@ 22是<?php echo $sidemenu->mname."<br />";?>

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

这就是你错误的原因。

答案 2 :(得分:5)

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

$sidemenus = mysql_fetch_array($results);

然后

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

答案 3 :(得分:4)

$sidemenu不是object,因此您无法在其上调用方法。它可能没有发送到您的view,或者$sidemenus是空的。