web-dev-qa-db-ja.com

で非オブジェクトのプロパティを取得しようとしています

コントロールページ:

<?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; ?>

エラー:

Notice:22行目のC:\ wamp\www\phone\pages\init.phpで非オブジェクトのプロパティを取得しようとしています

修正できますか?何が起こったのか全く分かりません。

36
Gereltod

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()が行うと仮定したことを行います

30
Phil

あなたのエラー

Notice:22行目のC:\ wamp\www\phone\pages\init.phpで非オブジェクトのプロパティを取得しようとしています

あなたのコメント

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

$sidemenuはオブジェクトではなく、そのプロパティの1つにアクセスしようとしています。

それがあなたのエラーの理由です。

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

または

$sidemenus = mysql_fetch_array($results);

それから

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

$sidemenuobjectではないため、メソッドを呼び出すことはできません。おそらくviewに送信されていないか、$sidemenusが空です。

4
james