【问题标题】: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 不是对象。
  • 查询运行良好并返回数据。

标签: php mysql object foreach fetch


【解决方案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 />";?>
      

      【讨论】:

        猜你喜欢
        • 2016-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多