gpt4 book ai didi

php - 是否可以在 MySQL 存储过程中编写此递归循环

转载 作者:行者123 更新时间:2023-11-30 23:50:56 24 4
gpt4 key购买 nike

嗨,我正在使用 codeigniterMySQL我有一个这样的表结构。

enter image description here

当我传递父标题时,我得到了所有的子值。

这是代码

<?php <br>
// $parent is the parent of the children we want to see <br>
// $level is increased when we go deeper into the tree, <br>
//        used to display a nice indented tree <br>
function display_children($parent, $level) { <br>
   // retrieve all children of $parent <br>
   $result = mysql_query('SELECT title FROM tree '. <br>
                          'WHERE parent="'.$parent.'";'); <br>
<br>
   // display each child <br>
   while ($row = mysql_fetch_array($result)) { <br>
       // indent and display the title of this child <br>
       echo str_repeat('  ',$level).$row['title']."\n"; <br>
<br>
       // call this function again to display this <br>
       // child's children <br>
       display_children($row['title'], $level+1); <br>
   } <br>
} <br>
?>

当我通过 display_children('',0);我明白了

Food<br>
Fruit<br>
Red<br>
Cherry<br>
Yellow<br>
Banana<br>
Meat<br>
Beef<br>
Pork

要显示“Fruit”子树,您可以运行 display_children('Fruit',0);

  • 如您所见,这是一个递归函数。当子级别增长时,iti 效率低下,并使查询非常慢。

所以我打算写一个存储过程,因为它很高效。是否可以 ??如果可能的话,请给我一个示例代码,在此先感谢......................

最佳答案

MySQL 存储过程的缺点多于优点。恕我直言,您应该格外小心地使用此功能。

其中一个主要缺点是它无法进行版本控制。您只有一个版本,仅此而已。

将业务逻辑包含在存储引擎中的设计是邪恶的,无论它是 mysql、oracle、postgre 等。

考虑到缺点,您还应该考虑这样一个事实,即使用存储过程没有额外的好处 - 没有性能提升。纳达!

如果我遇到你的情况,我会做的就是提取数据并在 php 中完成递归处理。

关于php - 是否可以在 MySQL 存储过程中编写此递归循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11601976/

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