Mysql
 sql >> база данни >  >> RDS >> Mysql

Рекурсивно обхождане на дърво с mysql през PHP

не е добре да извиквате mysql сървър и да извличате резултат всеки път

какво ще стане, ако имате над 100 реда? или 200+

използвайте това, за да направите заявка само веднъж:

$result = mysql_query("SELECT * FROM test");
$arrs = array();

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    $arrs[] = $row;
}

function build_tree($arrs, $parent_id=0, $level=0) {
    foreach ($arrs as $arr) {
        if ($arr['parent_id'] == $parent_id) {
            echo str_repeat("-", $level)." ".$arr['name']."<br />";
            build_tree($arrs, $arr['id'], $level+1);
        }
    }
}

build_tree($arrs);

общ пример за таблица

  id    name    parent_id


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Python - автоматизиране на MySQL индекс:параметър за предаване

  2. Помощ за алгоритъма на заявките на PHP MYSQL

  3. Преглед на репликацията от клъстер към клъстер

  4. MySQL Insert Command срещу T-SQL Синтаксис на заявка с примери

  5. Предупреждение:session_start():Не може да се изпрати бисквитка на сесията - заглавките вече са изпратени от (изходът е започнал в