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
DDDasal
2024-11-10 12:46:021037semak imbas

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);
// 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!

Kenyataan:
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