php递归查询数据结构 php递归实现1到100的和

php写函数 根据子类(id)递归查找顶级父类(id) 返回父类名字 (表结构:id name pid)你这种表结构叫邻接表 , 查询的方式通过自连接 。如
SELECT t1.name AS lev1, t2.name as lev2, t3.name as lev3, t4.name as lev4
FROM Tbname AS t1
LEFT JOIN Tbname AS t2 ON t2.pid = t1.id
LEFT JOIN Tbname AS t3 ON t3.pid = t2.id
LEFT JOIN Tbname AS t4 ON t4.pid = t3.id
WHERE t1.name = 'XXXX'
这种方法的主要局限是你需要为每层数据添加一个自连接,随着层次的增加,自连接
变得越来越复杂,检索的性能自然而然的也就下降了 。当然这种结构在查询前必须知道该节点所处的层级,否则无法确定自连接的深度 。
邻接表模型的局限性很大,用纯SQL实现有一定的难度 。不妨考虑其他模型,比如嵌套模型 。
嵌套模型的基本结构是树型结构 , SQL检索比邻接表要方便很多 。
关于嵌套模型,PHPChina的第一期电子杂志PHPer也有过深入探讨,请参考!
[PHP][THNIKPHP]如何递归查询数据库function get_category($id){
$str=array();
//$sql = "select * from biao where id=$id";查询节点 , 自己写吧
$result = array('id'=,'parent_id'=);//查询结果一个数组格式
if($result){
$str = get_category($result['parent_id']);
$str[]=$result;
}
return $str;
}
}
调用get_category()就行了,$str第一个元素是节点本身 , 去掉就行了 。
php递归查询不会, , 求教 。就是一个三级分类传个ID找到他的上级,还有父级 。。这种类型的数据,一般数据库中,一张表会有存在两个字段,一个是它本身id,另一个是它的父级parent_id 。
【php递归查询数据结构 php递归实现1到100的和】既然要找到它的祖父级,sql语句这样写:
$id = empty($_POST['id'])?'':$_POST['id'];
$parent_id = get_parent_id($id);
$p_p_id = get_parent_id($parent_id);
function get_parent_id($id){
$sql = "select parent_idfrom ecs_table1 whereid=" . $id;
return($GLOBALS['db']-getone($sql ));
}
递归,就是根据现有的id,重复取 。
上面get_parent_id只是获取父id,当然,你可以写一个直接获取祖父id的函数 。
不过 , 现在大部分php网站,都只会有获取父类的函数 , 想discuz,ecshop等 。获取祖父id,就是不断的获取该id的父id 。
php递归查询数据结构的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于php递归实现1到100的和、php递归查询数据结构的信息别忘了在本站进行查找喔 。

    推荐阅读