「非オブジェクトのプロパティを取得しようとしています」というエラー メッセージが表示された場合-object」の場合は、その発生のコンテキストを調べることが重要です。原因と解決策を理解するために、特定のケースを詳しく調べてみましょう。
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);
ビュー ページ
foreach ($sidemenus as $sidemenu): echo $sidemenu->mname."<br />"; endforeach;
< h3>原因分析
根本的な原因は、mysql_fetch_object() がオブジェクトの配列を返すという想定にありますが、実際には単一のオブジェクトのみを取得します。ビュー ページで結果を反復処理するときに、配列要素のプロパティにアクセスしようとします。この場合、配列要素は配列ではなく、単一のオブジェクトです。
問題を解決するには、スクリプトを適切に変更する必要があります。考えられる解決策の 1 つは、ループを使用して結果をオブジェクトの配列に変換することです。
$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; }
while ループを使用して結果を反復処理することで、各オブジェクトを $sidemenus 配列に追加して配列を作成できます。これはビュー ページで期待どおりにアクセスできます。
以上がPHP コードで「非オブジェクトのプロパティを取得しようとしています」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。