Menyelesaikan Ralat "Mencuba Mendapatkan Harta Bukan Objek" dalam PHP
Apabila bekerja dengan PHP, anda mungkin menghadapi ralat "Mencuba untuk mendapatkan harta bukan benda." Ralat ini biasanya berlaku apabila cuba mengakses sifat objek yang belum dimulakan dengan betul atau batal.
Dalam kes kod yang diberikan, isunya terletak pada pengambilan data menu sisi daripada pangkalan data. Fungsi mysql_fetch_object() mengembalikan satu objek, bukan tatasusunan objek. Akibatnya, lelaran melalui pembolehubah $sidemenus dalam halaman paparan akan mencetuskan ralat.
Untuk menyelesaikan isu ini, ubah suai kod pada halaman kawalan kepada:
$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; }
Kod ini menukar objek tunggal yang dikembalikan oleh mysql_fetch_object() ke dalam tatasusunan objek. Halaman paparan kemudiannya boleh berulang melalui tatasusunan tanpa menghadapi ralat sifat.
Alternatif lain ialah menggunakan PDO, yang menyediakan antara muka yang lebih moden dan selamat untuk interaksi pangkalan data. Kaedah PDOStatement::fetchAll(PDO::FETCH_OBJ) boleh digunakan untuk mengambil tatasusunan objek daripada pertanyaan pangkalan data.
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat 'Mencuba Mendapatkan Harta Bukan Objek' dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!