将 4 级邻接数据库转换为数组,然后转换为 JSON 格式

我正在努力学习,所以我不会伸出援手,直到我用尽了所有其他途径。我希望在这里得到一些帮助/指导,因为我在Stack Overflow(靠近页面底部)上找到的解决方案之一似乎不适合我。几个小时后,我准备扔掉毛巾了!我发现一些参考资料告诉我,随着时间的推移,各种扩展已经贬值和/或完全删除,所以我现在想知道这个代码片段是否更旧,并且由于其他原因没有运行(尽管我知道我可能也错过了一些东西)。作为参考,我在共享服务器上,所以我不能更改PHP版本(5.6.40)或mySQL版本(5.6.46)。

我的表被命名为(用于测试)。我只有三列:, , 。邻接数据的最大深度为 4。我正在尝试构建一个数组,然后可以转换(我在想)。根据我复制/粘贴/修改的代码片段,我认为它可以工作,但即使在使用和之后,我在屏幕上也没有得到任何东西。在 Chrome 开发工具中,没有连接错误。test_jsonidparentnamejson_encode($arr)print_rvar_dump

这是我正在使用的代码:

echo '<pre>';


$categories = OrgChart::getTopCategories();

print_r($categories);


echo '</pre>';


class OrgChart

{


    public static function getTopCategories()

    {

        return self::getCategories('parent = 0');

    }


    public static function getCategories($where = '')

    {

        if ($where) $where = " WHERE $where";

        $result = mysql_query("SELECT * FROM test_json $where");


        $categories = array();


        while ($category = mysql_fetch_array($result)){

        $my_id = $category['id'];

        $category['children'] = OrgChart::getCategories("parent = $my_id");

            $categories[] = $category;

        }


        mysql_free_result($result);

        return $categories;

    }

}

探索选项几个小时后的更新:

克里斯托斯和达尔曼是对的,我试图使用的代码有许多贬值(删除?)的扩展名。现在我已经修复了这些问题并且没有错误(使用error_reporting(E_ALL); ini_set(“display_errors”,1); ini_set(“display_startup_errors”,1);)我仍然感到困惑,为什么我只得到这个输出:数组( )

从下面的代码。关于我缺少什么的任何其他建议?感谢您提供的任何帮助。我可能正看着它,但我的眼睛开始交叉。


素胚勾勒不出你
浏览 161回答 1
1回答

胡说叔叔

没有收到任何人的回复,所以我一直在逐行探索。为了解决,这是我的发现:在我的代码中,返回 self::get 类别('父 = 0');是罪魁祸首。使用“0”或使用“= NULL”没有产生任何结果。我确信这是众所周知的(但不是我,这就是为什么我寻求帮助),但是在处理这种类型的查询的NULL值时,您必须使用“IS NULL”或“IS NOT NULL”。我发布这个,以防其他人 - 像我一样 - 目前不知道这一点。
打开App,查看更多内容
随时随地看视频慕课网APP