Mencuba Mendapatkan Harta Bukan Objek dalam PHP: Penjelasan Terperinci
Dalam PHP, menghadapi "Mencuba mendapatkan harta bukan -objek" mesej ralat boleh membingungkan. Untuk menyelidiki punca dan penyelesaian ralat ini, mari analisa coretan kod yang disediakan:
// Control page $results = mysql_query(...); $sidemenus = mysql_fetch_object($results);
// View page foreach ($sidemenus as $sidemenu) { echo $sidemenu->mname."<br />"; }
Isu timbul kerana mysql_fetch_object() mengembalikan satu objek yang mewakili baris pertama set hasil, manakala gelung dalam halaman Lihat menganggap $sidemenus sebagai tatasusunan dan cuba mengakses elemennya sebagai objek.
// Fix $results = mysql_query(...); $sidemenus = array(); while ($sidemenu = mysql_fetch_object($results)) { $sidemenus[] = $sidemenu; }
Kod yang disemak ini memulakan $sidemenus sebagai tatasusunan dan berulang pada set hasil, menambah setiap objek kepada tatasusunan. Selepas itu, halaman Lihat boleh melingkari $sidemenus dengan selamat sebagai tatasusunan objek.
Sebagai alternatif, untuk pengendalian pangkalan data yang lebih cekap, pertimbangkan untuk menukar kepada PDO (Objek Data PHP). PDOStatement::fetchAll(PDO::FETCH_OBJ) menyediakan kefungsian yang serupa, tetapi dengan prestasi dan keselamatan yang dipertingkatkan.
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat 'Mencuba Mendapatkan Harta Bukan Objek' dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!