gpt4 book ai didi

php - 如何用PHP和MySQL创建JSON嵌套子父树(PDO方法)

转载 作者:行者123 更新时间:2023-11-29 02:53:16 26 4
gpt4 key购买 nike

我正在尝试使用 PHP 和 MySQL 构建嵌套的父子 JSON 树。我的目标是从我的 MySQL 数据库创建一个 JSON 树,并使用 AngularJS 在前端显示一棵树。创建树很重要。
我的数据库结构是:

╔═══════╦═══════════════════╦═════════╗║  id   ║       name        ║parent_id║╠═══════╬═══════════════════╬═════════╣║   1   ║       Parent      ║    0    ║║   2   ║       Child-1     ║    1    ║║   3   ║       Child-2     ║    1    ║║   4   ║   Grand Child-1   ║    2    ║║   5   ║   Grand Child-2   ║    2    ║║   6   ║   Grand Child-3   ║    3    ║║   7   ║   Grand Child-4   ║    3    ║╚═══════╩═══════════════════╩═════════╝

I need the tree to look like:

Parent    |--Child-1    |    |--Grand Child-1    |    |_ Grand Child-2    |--Child-2    |    |--Grand Child-3    |    |_ Grand Child-4

And i have made something like this :

function hasChild($id){
$sql = "SELECT count(*) FROM `myTable` WHERE parent_id=".$id;
$stmt = $this->db->prepare($sql);
$stmt->execute($a);
$row = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $row[0] > 0 ? true : false;
}//function hasChild($id)

// create an index on id
$index = array();
foreach($rows as $i =>$row)
{
if (hasChild($i)) {
$index[$row['id']] = $row;
}
}

// build the tree
foreach($index as $id => $indexRow)
{
if ($id === 1) continue;
$parent = $indexRow['parent_id'];
$index[$parent]['children'][] = $indexRow;
}
unset($indexRow);

echo json_encode($index);

但它显然没有给我正确的 json 树:(

我看过嵌套的 json 和数组解决方案,但有些东西对我来说并没有点击,所以我希望有人能帮我解决这个问题。我可以使用另一种方式,只要我可以拥有相同/相似的功能即可。

希望我能够很好地描述情况,但如果您需要更多数据,请告诉我。

提前致谢!

最佳答案

$a 未定义。您也没有在查询中使用任何占位符,所以我认为这会失败。

尝试:

function hasChild($id){
$sql = "SELECT count(*) as da_count FROM `myTable` WHERE parent_id = ?";
$stmt = $this->db->prepare($sql);
$stmt->execute(array($id));
$row = $stmt->fetch(PDO::FETCH_ASSOC);
return $row['da_count'] > 0 ? true : false;
}//function hasChild($id)

有关准备好的语句的较长文章:http://php.net/manual/en/pdo.prepared-statements.php .

关于php - 如何用PHP和MySQL创建JSON嵌套子父树(PDO方法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33325596/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com