php递归查询数据库不卡的简单介绍

php递归查询不会,,求教。就是一个三级分类传个ID找到他的上级,还有父级。。

这种类型的数据,一般数据库中,一张表会有存在两个字段,一个是它本身id,另一个是它的父级parent_id。

成都创新互联公司网站建设由有经验的网站设计师、开发人员和项目经理组成的专业建站团队,负责网站视觉设计、用户体验优化、交互设计和前端开发等方面的工作,以确保网站外观精美、网站设计制作、做网站易于使用并且具有良好的响应性。

既然要找到它的祖父级,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_id from ecs_table1 where id=" . $id;

return($GLOBALS['db']-getone($sql ));

}

递归,就是根据现有的id,重复取。

上面get_parent_id只是获取父id,当然,你可以写一个直接获取祖父id的函数。

不过,现在大部分php网站,都只会有获取父类的函数,想discuz,ecshop等。获取祖父id,就是不断的获取该id的父id。

PHP递归求解答

弱鸡,你少定义一个字段   :familyId

一个族的familyId相同,首先 sql 把 familyId = "自己familyID" 结果全部返回

再在PHP中递归出结果,而不是在数据库中反复查找条件,网站都会卡死

比如数组$List 为 张氏家族 所有的列表(也就是张氏家族sql返回结果)

首先遍历一个名称列表,以ID为KEY :$namelist = array(1=张三,2=张四,3=张五,4=张六);

再遍历出一个父子关系列表:也以ID为KEY,父方ID为值:$flist = array(1=2,2=3,3=4,4=5);

$namelist = array(1='张三',2='张四',3='张五',4='张了',6="张飞",7="张六",9="张宝",12='张七',13='张角');

$flist = array(1=2,2=3,3=7,4=9,7=12,6=13);

$res = array();

family(1, $flist, $res,$namelist);

var_dump($res);

public function family($id,$flist,$res,$namelist){

if($flist[$id]){

$res[] = $namelist[$flist[$id]];

family($flist[$id],$flist,$res,$namelist);

}

php 递归问题

第一,没有选择数据库,在连接数据库后添加mysql_select_db("数据库名");

第二、我感觉不代码不全吧,因为我拷下来看了一下,少一},当然上面那个没少,补充的少了。

第三、还有没看出这个$ii是干什么用的。

第四、没感觉$selec=0与不等于0输出有什么不同。

第五、以后最好是把html代码与程序分开写。

因为不知道需求,只能根据你的程序简单修改如下:

?php

function TreeMenu($selec) {

$Conn=mysql_connect("localhost","kk","kk123");

mysql_select_db("数据库名");

$ii=1;

$sql="select * from tvmenu where bid=".$selec;

$result=mysql_query($sql,$Conn);

$str = "";

while($row =mysql_fetch_array($result)) {

if($selec=0) {

$str = 'option value="'.$row['id'].'"'.$row['name'].'/option ';

}else {

$str = 'option value="'.$row['id'].'"'.$row['name'].'/option ';

}

echo $str;

$ii++;

TreeMenu($row['id']);

$ii--;

}

}

?

select name="bid" id="bid"

?php

TreeMenu(0);

?

/select

php+mysql在数据库里数据大的话查询很慢

1.建立索引,尽可能把索引建立到你你经常比较的字段上,如select

a,b,c,d

from

a

where

索引字段=值,这个索引字段最好是数值型数据

2.慢有更多情况,

情况1:远程查询,其实可能查询不慢,由于数据量大,传输过程慢

情况2:WHERE

后面的比较数据太多,比如

like

类的语句

情况3:需要哪个字段只取那个字段就行了,比如select

*

from

a与select

b,c,d

from

a速度是有差距的

3.数据库定期维护,压缩,把不常用的数据备份后放入备份库里,查询时查备份库等

问题补充:

.第一条:建立索引,怎么建立,我也听说过,但不知道怎么使用

答:每种数据建立索引的方法有差异,比如SQL

SERVER

2000中可对多个字段进行索引,比如SQL

SERVER2000中有命令

CREATE

INDEX

为给定表或视图创建索引。

只有表或视图的所有者才能为表创建索引。表或视图的所有者可以随时创建索引,无论表中是否有数据。可以通过指定限定的数据库名称,为另一个数据库中的表或视图创建索引。

语法

CREATE

[

UNIQUE

]

[

CLUSTERED

|

NONCLUSTERED

]

INDEX

index_name

ON

{

table

|

view

}

(

column

[

ASC

|

DESC

]

[

,...n

]

)

[

WITH

index_option

[

,...n]

]

[

ON

filegroup

]

index_option

::=

{

PAD_INDEX

|

FILLFACTOR

=

fillfactor

|

IGNORE_DUP_KEY

|

DROP_EXISTING

|

STATISTICS_NORECOMPUTE

|

SORT_IN_TEMPDB

}

第三条:数据库定期维护,压缩:怎么个压缩法?及时备份数据到备份库查询备份库,那查询时不是还慢吗?

答:这个有压缩工具,基本上每种数据库都有自己的压缩数据库的工具

[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递归查询数据库不卡的简单介绍
网页路径:https://www.cdcxhl.com/article0/dsidgoo.html

成都网站建设公司_创新互联,为您提供微信小程序品牌网站制作虚拟主机网站制作品牌网站建设做网站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

手机网站建设