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) メソッドを使用して、データベース クエリからオブジェクトの配列をフェッチできます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3