gpt4 book ai didi

php mysql替代在循环内再次使用相同的查询

转载 作者:行者123 更新时间:2023-11-29 00:37:36 25 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
Is it possible to query a tree structure table in MySQL in a single query, to any depth?

我创建了一个管理区域,它使用 php 从 mysql 数据库中提取数据并将结果显示在表格中。基本上它显示了一个父类别,然后是它下面的第一个子类别,然后是第三级子类别/主题。

它工作得很好,但由于我是 mysql 和 php 的新手,我确信它需要改进代码以节省数据库资源,因为在构建表时我使用 3 个 while 循环并在每个循环中进行 mysql 查询我确信这是错误的方法。

有人可以为我提供一些帮助以找到最好的方法吗?

代码如下:

           $query = mysql_query("SELECT * FROM categories WHERE
parent_id is null
order by cat_id asc;", $hd)
or die ("Unable to run query");

while ($row = mysql_fetch_assoc($query)) {
echo '<tr style="font-weight:bold;color:green;"><td>'. $row ['cat_id'].'</td><td>'.$row['cat_name'].'</td><td>'.$row ['parent_id'].'</td><td>'.$row['active'].'</td><td>'.$row ['url'].'</td><td>'.$row['date_updated'].'</td></tr>' ;

$query2 = mysql_query("SELECT * FROM categories WHERE
(active = 'true' AND parent_id = ".$row ['cat_id'].")
order by cat_id asc;", $hd)
or die ("Unable to run query");
while ($row2 = mysql_fetch_assoc($query2)) {
echo '<tr style="font-weight:bold;"><td>'. $row2['cat_id'].'</td><td>'.$row2 ['cat_name'].'</td><td>'.$row2['parent_id'].'</td><td>'.$row2 ['active'].'</td><td>'.$row2['url'].'</td><td>'.$row2 ['date_updated'].'</td></tr>' ;
$query3 = mysql_query("SELECT * FROM categories WHERE
(active = 'true' AND parent_id = ".$row2 ['cat_id'].")
order by cat_id asc;", $hd)
or die ("Unable to run query");
while ($row3 = mysql_fetch_assoc($query3)) {
echo '<tr><td>'. $row3['cat_id'].'</td><td>'.$row3['cat_name'].'</td><td>'.$row3 ['parent_id'].'</td><td>'.$row3['active'].'</td><td>'.$row3 ['url'].'</td><td>'.$row3['date_updated'].'</td></tr>' ;

}
}
}

编辑

好的,所以我做了一些研究,这就是我所在的地方:

可能对于小型数据库我的方法没问题。

对于使用数组存储数据的更大数据库,可能意味着我需要使用递归方法,这可能会占用太多内存。很想听听人们的想法,它仍然比在嵌套 while 循环中循环数据库查询更好吗?

我发现了以下线程,其中有一个无需递归且仅使用一个查询即可执行此操作的答案。不确定我是否需要在当前设计中添加位置列: How to build unlimited level of menu through PHP and mysql

如果我使用嵌套集模型而不是邻接模型重 build 计,那么 mysql 查询将按要求的顺序返回结果,但是维护嵌套集设计超出了我的理解范围,我认为这太过分了。

就是这样。如果有人对此有任何意见,请添加到对话中。必须有一个成功的方法,因为大量 Web 应用程序必须需要这种要求。

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