我遇到了一個問題,在無序列表中排序並顯示數據庫中的類別。在無序列表中顯示類別
我寫了這個代碼來完成任務:
$roots = $GLOBALS['sql']->query("SELECT `id`,`name` FROM `category` WHERE `parent`='0'");
$out = '<ul>';
foreach($roots as $root){
$out .= '<li>'.$root['name'].'<ul>';
$downs = $GLOBALS['sql']->query("SELECT `id`,`name` FROM `category` WHERE `parent`='".$root['id']."'");
foreach($downs as $down){
$out .= '<li>'.$down['name'].'<ul>';
$bots = $GLOBALS['sql']->query("SELECT `name` FROM `category` WHERE `parent`='".$down['id']."'");
foreach($bots as $bot){
$out .= '<li>'.$bot['name'].'</li>';
}
$out .= '</ul></li>';
}
$out .= '</ul></li>';
}
$out .= '</ul>';
return str_replace('<ul></ul>', '', $out);
這似乎有一個很長的運行時間,如果有許多類別。有沒有更高效的方法? 或者一般來說,PHP數組處理比MySQL查詢更快嗎?
編輯: 我試圖加入表和這個查詢我得到了正確的表。
SELECT
root.name AS root_name,
down1.name AS down1_name,
down2.name AS down2_name
FROM
category AS root
LEFT JOIN category AS down1 ON down1.parent = root.id
LEFT JOIN category AS down2 ON down2.parent = down1.id
WHERE
root.parent = '0'
ORDER BY
root_name, down1_name, down2_name
但是,我如何處理這個表在PHP中得到無序列表?這是甚至更快?
看起來你需要[加入](http://dev.mysql.com/doc/refman/5.7/en/join.html)MySQL中的三張表 –
這就是我最初做的,但不知道如何繼續。這是我的MySQL: –
SELECT'root'.'name' as'root_name','down1'.'name' as'down1_name','down2'.'name' as''down2_name' FROM'category' as'root' LEFT JOIN'category' as'down1' ON'down1'.'parent' ='root'.'id' LEFT JOIN'category' as'down2' ON'down2'.'parent' ='down1'.'id' WHERE'root'.'parent' ='0'ORDER BY'root_name','down1_name','down2_name' –