试图获取非对象的属性

Ger*_*tod 38 php mysql foreach object 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);
?>
Run Code Online (Sandbox Code Playgroud)

在浏览页面上:

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

错误是:

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

你能修好它吗?我不知道发生了什么.

Phi*_*hil 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;
}
Run Code Online (Sandbox Code Playgroud)

我建议你看看PDO.PDOStatement::fetchAll(PDO::FETCH_OBJ)做你mysql_fetch_object()想做的事


ale*_*lex 11

你的错误

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

你的评论

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

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

这就是你错误的原因.


jam*_*mes 5

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

  • @Gerelt 不,我建议您再次检查 [manual](http://php.net/manual/en/function.mysql-fetch-object.php)。 (4认同)

Jam*_*mie 5

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

要么

$sidemenus = mysql_fetch_array($results);
Run Code Online (Sandbox Code Playgroud)

然后

<?php echo $sidemenu['mname']."<br />";?>
Run Code Online (Sandbox Code Playgroud)