ホームページ > バックエンド開発 > PHPチュートリアル > PHP で「非オブジェクトのプロパティを取得しようとしています」というエラーが発生するのはなぜですか?

PHP で「非オブジェクトのプロパティを取得しようとしています」というエラーが発生するのはなぜですか?

DDD
リリース: 2024-11-10 12:46:02
オリジナル
1032 人が閲覧しました

Why Am I Getting the

PHP で非オブジェクトのプロパティを取得しようとしています: 詳細な説明

PHP で、「非オブジェクトのプロパティを取得しようとしています」というエラーが発生しました。 -object」というエラー メッセージはわかりにくい場合があります。このエラーの原因と解決策を詳しく調べるために、提供されたコード スニペットを分析してみましょう:

// Control page
$results = mysql_query(...);
$sidemenus = mysql_fetch_object($results);
ログイン後にコピー
// View page
foreach ($sidemenus as $sidemenu) {
    echo $sidemenu->mname."<br />";
}
ログイン後にコピー

この問題は、mysql_fetch_object() が結果セットの最初の行を表す単一のオブジェクトを返すために発生します。一方、View ページのループは $sidemenus を配列として扱い、その要素にオブジェクトとしてアクセスしようとします。

// Fix
$results = mysql_query(...);

$sidemenus = array();
while ($sidemenu = mysql_fetch_object($results)) {
    $sidemenus[] = $sidemenu;
}
ログイン後にコピー

この修正されたコードは、$sidemenus を配列として初期化し、結果セットを反復処理して各オブジェクトを追加します。配列に。その後、View ページは $sidemenus をオブジェクトの配列として安全にループできるようになります。

あるいは、より効率的なデータベース処理のために、PDO (PHP データ オブジェクト) への切り替えを検討してください。 PDOStatement::fetchAll(PDO::FETCH_OBJ) は同様の機能を提供しますが、パフォーマンスとセキュリティが向上しています。

以上がPHP で「非オブジェクトのプロパティを取得しようとしています」というエラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート