sql >> データベース >  >> RDS >> Mysql

PHPを介したmysqlによる再帰的なツリートラバーサル

    mysqlサーバーを呼び出して毎回結果を取得するのは良くありません

    100行を超える場合はどうなりますか?または200+

    これを使用して1回だけクエリを実行します:

    $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. MySQL-PHPから日本語を挿入-エンコーディングの問題

    2. EF4-選択したストアドプロシージャは列を返しません

    3. JSONを介してAndroidからサーバーにデータを送信する

    4. mysqlを使用してphpでFacebookのような友達システムを作成する方法