数据库模式树视图PHP MYSQL

数据库模式树视图PHP MYSQL,php,mysql,ajax,Php,Mysql,Ajax,我试图从一个MYSQL数据库表创建一个treeview(理想情况下使用bootstrap),该表本质上是一个数据字典结构。我看到的每个示例都会创建一个parentid,以便为treeview创建json/数组输入,但是我的数据结构在每一行上都有所有层次结构级别 层次结构将是: 数据库 模式 桌子 数据库 模式 桌子 我的数据库表有3列。。。数据库、架构和表。每一行都有三个属性,因此完整的层次结构。使这一点更加棘手的是,相同的模式和表可以存在于多个数据库中 我该如何着手

我试图从一个MYSQL数据库表创建一个treeview(理想情况下使用bootstrap),该表本质上是一个数据字典结构。我看到的每个示例都会创建一个parentid,以便为treeview创建json/数组输入,但是我的数据结构在每一行上都有所有层次结构级别

层次结构将是:

  • 数据库

    • 模式
      • 桌子
  • 数据库

    • 模式
      • 桌子
我的数据库表有3列。。。数据库、架构和表。每一行都有三个属性,因此完整的层次结构。使这一点更加棘手的是,相同的模式和表可以存在于多个数据库中

我该如何着手解决这个问题

或者,正如下面提到的,我如何从一个数组转换成一个作为treeview输入的JavaScript对象嵌套数组

以下是用于创建数组的php:

$stmt = $pdo->prepare('SELECT * FROM MyTable');
$stmt->execute();

$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
print_r($result);

您需要遍历所有行,并将它们插入到适当的映射(关联数组)中,以便“膨胀”数据结构

大概是这样的:

//将数据库中的所有行提取到$result中
$databases=[];
foreach($结果为$行){
$database=$row[“database”];
$schema=$row[“schema”];
$table=$row[“对象”];
如果(!array_key_存在($database,$databases))
$databases[$database]=[];
如果(!array_key_存在($schema,$databases[$database]))
$databases[$database][$schema]=[];
数组推送($databases[$database][$schema],$table);
}

这里的挑战到底是什么?只需查询您的表并将数据加载到与您的定义匹配的内存中数据结构(假设数据不超过合理的数量)(多维关联数组就足够了)。然后迭代每个级别(实际上是3个嵌套循环)并打印层次结构。这对我来说似乎相当简单。我想如果你详细说明实现它时遇到的具体问题,你会有更好的答案。我想我的问题是如何从PHP中的数组转换为JavaScript对象的嵌套数组,因为这是bootstrap treeview所需的输入,“schema”、“table”]、[“database”、“schema”、“table”]、…])到一个关联数组,其中“database”和“schema”是引用索引表数组的键,对吗?我可以回答这个问题。当我对php数组使用json_编码时,我得到这个结构([{“database”:“Company 1”,“schema”:“Production”,“object”:“Brands”},{“database”:“Company 1”,“schema”:“Production”,“object”:“Brands”},{“database”:“Company“:“生产”、“对象”:“类别”}])。。。。所以我认为它只需要转换成嵌套的json,而不是现在的json字符串数组。我现在明白你的问题了。我会写一个答案。太棒了,非常感谢!