sql >> Databáze >  >> RDS >> Mysql

Rekurzivní procházení stromu s mysql přes PHP

není dobré pokaždé volat mysql server a načítat výsledek

co když máte více než 100 řádků? nebo 200+

použijte pro dotaz pouze jednou:

$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);

běžný příklad pro tabulku

  id    name    parent_id


  1. Jak mohu transformovat řádky na data založená na opakovaných sloupcích?

  2. Pivoting dat pomocí dvou sloupců

  3. jak rozdělit a vložit data CSV do nové tabulky v jediném příkazu?

  4. Jak řešit problémy s definicí MySQL