Rumah > pembangunan bahagian belakang > tutorial php > Mengapa Saya Mendapat Ralat 'Mencuba Mendapatkan Harta Bukan Objek' dalam PHP?

Mengapa Saya Mendapat Ralat 'Mencuba Mendapatkan Harta Bukan Objek' dalam PHP?

DDD
Lepaskan: 2024-11-10 12:46:02
asal
1036 orang telah melayarinya

Why Am I Getting the

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);
Salin selepas log masuk
// View page
foreach ($sidemenus as $sidemenu) {
    echo $sidemenu->mname."<br />";
}
Salin selepas log masuk

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;
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan