Mengisi Kategori Rekursif dengan Pertanyaan MySQL Tunggal
Menyusun kandungan tapak web ke dalam kategori hierarki menimbulkan cabaran dalam hal mendapatkan kembali kategori tersebut dengan cekap untuk paparan. Artikel ini menyelidiki pendekatan paling berkesan untuk mendapatkan semula data kategori secara rekursif menggunakan PHP dan MySQL.
Struktur Rekursif: Pokok Hierarki
Bayangkan tapak web dengan artikel dan bahagian tersusun dalam struktur seperti pokok. Setiap bahagian mungkin mempunyai bahagian induk, yang berpotensi membawa kepada pelbagai peringkat sarang. Contohnya:
Subjek 1
Subjek 2
Subjek 4
Subjek 6
Pertanyaan MySQL: Mengambil Perhubungan Ibu Bapa-Anak
Untuk mendapatkan semula data ini secara rekursif, kita perlu mengambil perhubungan ibu bapa-anak daripada pangkalan data MySQL. Pertanyaan di bawah menyelesaikan tugas ini:
SELECT category_id, name, parent FROM categories ORDER BY parent
Skrip PHP: Membina Struktur Pokok
Setelah data diambil, kita boleh membina struktur pokok dalam PHP untuk mengendalikan senario bersarang yang kompleks. Berikut ialah skrip contoh:
$nodeList = array(); // Associative array to store category nodes $tree = array(); // Array to hold the root nodes // Populate the $nodeList array with category data $query = mysql_query("SELECT category_id, name, parent FROM categories ORDER BY parent"); while ($row = mysql_fetch_assoc($query)) { $nodeList[$row['category_id']] = array_merge($row, array('children' => array())); } mysql_free_result($query); // Populate the $tree array with root nodes (those without a parent) foreach ($nodeList as $nodeId => &$node) { if (!$node['parent'] || !array_key_exists($node['parent'], $nodeList)) { $tree[] = &$node; } else { // If the node has a parent, add it as a child of that parent $nodeList[$node['parent']]['children'][] = &$node; } } // Clean up the variables unset($node); unset($nodeList); // The $tree array now contains the hierarchical tree structure
Pertimbangan Prestasi
Pendekatan berasaskan PHP ini amat cekap, walaupun untuk pokok besar. Ia mengelakkan overhed membuat beberapa pertanyaan MySQL rekursif, yang boleh melambatkan prestasi dengan ketara.
Kesimpulan
Penyelesaian PHP dan MySQL yang cekap ini membolehkan anda mendapatkan semula data kategori secara rekursif tanpa mengorbankan prestasi. Dengan memanfaatkan pendekatan berasaskan rujukan yang bijak, kami boleh membina struktur hierarki yang kompleks tanpa memerlukan pertanyaan pangkalan data yang kompleks.
Atas ialah kandungan terperinci Bagaimana untuk Mengisi Kategori Hierarki secara Rekursif dalam MySQL dengan Pertanyaan Tunggal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!