循环的子类别,子类别等

问题描述:

$sth = $db->query("SELECT * FROM categories WHERE parent = 0"); 

$sth->setFetchMode(PDO::FETCH_ASSOC); 

while ($row = $sth->fetch()) { 

    echo $row['title'] . '<br />'; 

    $sth2 = $db->prepare("SELECT * FROM categories WHERE parent = ?"); 
    $sth2->bindParam(1, $row['id']); 
    $sth2->execute(); 

    while ($row2 = $sth2->fetch()) { 
     echo '..' . $row2['title'] . '<br />'; 

     $sth3 = $db->prepare("SELECT * FROM categories WHERE parent = ?"); 
     $sth3->bindParam(1, $row2['id']); 
     $sth3->execute(); 

     while ($row3 = $sth3->fetch()) { 
      echo '....' . $row3['title'] . '<br />'; 
     } 
    } 


} 

正如你所看到的,我已经'硬编码'每个while循环主要是一个“主类别”,“一个子类别”,最后是子类别。 但是我觉得我可以改变它,自动地,循环子类别中的子类别,如果有的话。循环的子类别,子类别等

结构简单我的SQL: ID 父 标题 描述

我无能,我应该怎么解决这个小问题... while循环在if语句的东西?帮帮我。

+0

您使用的是什么数据库系统(名称和版本)? – 2012-03-31 20:34:07

+0

我正在使用MySQL 5.5.16 – John 2012-03-31 20:36:39

+2

用MySQL选择所有类别并不容易,然后用PHP缩小它的范围?仅使用MySQL查询遍历类树是一种痛苦。 – 2012-03-31 20:50:44

如果类别数量不是太大,可以做什么?从数据库中一次获取所有类别,然后在php中构建一个多维数组。

有关更多详细信息,请参阅this question and the answers