Apabila menghadapi mesej ralat "Mencuba mendapatkan harta bukan -objek," penting untuk mengkaji konteks kejadiannya. Mari kita mendalami kes tertentu untuk memahami punca dan penyelesaian.
Dalam skrip PHP, pertanyaan mendapatkan semula data daripada pangkalan data, tetapi apabila cuba mengakses sifat khusus hasil yang diambil, ralat timbul. Coretan kod yang terlibat adalah seperti berikut:
Halaman Kawalan
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);
Lihat Halaman
foreach ($sidemenus as $sidemenu): echo $sidemenu->mname."<br />"; endforeach;
< h3>Analisis Punca
Punca punca terletak pada andaian bahawa mysql_fetch_object() mengembalikan pelbagai objek, sedangkan pada hakikatnya ia mengambil hanya satu objek. Apabila mengulangi hasil dalam halaman paparan, ia cuba mengakses sifat elemen tatasusunan, yang dalam kes ini bukanlah tatasusunan tetapi sebaliknya objek tunggal.
Untuk menyelesaikan isu tersebut, pengubahsuaian yang sesuai pada skrip diperlukan. Satu penyelesaian yang mungkin adalah untuk menukar hasil ke dalam tatasusunan objek menggunakan gelung:
$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; }
Dengan melelaran hasil menggunakan gelung sementara, setiap objek boleh ditambah pada tatasusunan $sidemenus, mencipta tatasusunan yang boleh diakses seperti yang dijangkakan dalam halaman paparan.
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat 'Mencuba Mendapatkan Harta Bukan Objek' dalam Kod PHP Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!