PHP での「非オブジェクトのプロパティを取得しようとしています」エラーを解決する
PHP を使用しているときに、「オブジェクト以外のプロパティを取得しようとしています」というエラーが発生することがあります。非オブジェクトのプロパティを取得します。」このエラーは通常、適切に初期化されていないオブジェクト、または null であるオブジェクトのプロパティにアクセスしようとしたときに発生します。
提供されたコードの場合、問題はデータベースからのサイドメニュー データのフェッチにあります。 mysql_fetch_object() 関数は、オブジェクトの配列ではなく、単一のオブジェクトを返します。その結果、ビュー ページで $sidemenus 変数を反復処理すると、エラーがトリガーされます。
この問題を解決するには、コントロール ページのコードを次のように変更します。
$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; }
このコードmysql_fetch_object() によって返された単一のオブジェクトをオブジェクトの配列に変換します。その後、ビュー ページはプロパティ エラーが発生することなく配列を反復処理できます。
もう 1 つの方法は、データベース対話のためのより最新で安全なインターフェイスを提供する PDO を使用することです。 PDOStatement::fetchAll(PDO::FETCH_OBJ) メソッドを使用して、データベース クエリからオブジェクトの配列をフェッチできます。
以上がPHP で「非オブジェクトのプロパティを取得しようとしています」エラーを修正する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。