這種類型的數(shù)據(jù),一般數(shù)據(jù)庫(kù)中,一張表會(huì)有存在兩個(gè)字段,一個(gè)是它本身id,另一個(gè)是它的父級(jí)parent_id。

成都創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)由有經(jīng)驗(yàn)的網(wǎng)站設(shè)計(jì)師、開(kāi)發(fā)人員和項(xiàng)目經(jīng)理組成的專業(yè)建站團(tuán)隊(duì),負(fù)責(zé)網(wǎng)站視覺(jué)設(shè)計(jì)、用戶體驗(yàn)優(yōu)化、交互設(shè)計(jì)和前端開(kāi)發(fā)等方面的工作,以確保網(wǎng)站外觀精美、網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站易于使用并且具有良好的響應(yīng)性。
既然要找到它的祖父級(jí),sql語(yǔ)句這樣寫(xiě):
$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 ));
}
遞歸,就是根據(jù)現(xiàn)有的id,重復(fù)取。
上面get_parent_id只是獲取父id,當(dāng)然,你可以寫(xiě)一個(gè)直接獲取祖父id的函數(shù)。
不過(guò),現(xiàn)在大部分php網(wǎng)站,都只會(huì)有獲取父類的函數(shù),想discuz,ecshop等。獲取祖父id,就是不斷的獲取該id的父id。
弱雞,你少定義一個(gè)字段?? :familyId
一個(gè)族的familyId相同,首先 sql 把 familyId = "自己familyID" 結(jié)果全部返回
再在PHP中遞歸出結(jié)果,而不是在數(shù)據(jù)庫(kù)中反復(fù)查找條件,網(wǎng)站都會(huì)卡死
比如數(shù)組$List 為 張氏家族 所有的列表(也就是張氏家族sql返回結(jié)果)
首先遍歷一個(gè)名稱列表,以ID為KEY :$namelist = array(1=張三,2=張四,3=張五,4=張六);
再遍歷出一個(gè)父子關(guān)系列表:也以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);
}
第一,沒(méi)有選擇數(shù)據(jù)庫(kù),在連接數(shù)據(jù)庫(kù)后添加mysql_select_db("數(shù)據(jù)庫(kù)名");
第二、我感覺(jué)不代碼不全吧,因?yàn)槲铱较聛?lái)看了一下,少一},當(dāng)然上面那個(gè)沒(méi)少,補(bǔ)充的少了。
第三、還有沒(méi)看出這個(gè)$ii是干什么用的。
第四、沒(méi)感覺(jué)$selec=0與不等于0輸出有什么不同。
第五、以后最好是把html代碼與程序分開(kāi)寫(xiě)。
因?yàn)椴恢佬枨螅荒芨鶕?jù)你的程序簡(jiǎn)單修改如下:
?php
function TreeMenu($selec) {
$Conn=mysql_connect("localhost","kk","kk123");
mysql_select_db("數(shù)據(jù)庫(kù)名");
$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
1.建立索引,盡可能把索引建立到你你經(jīng)常比較的字段上,如select
a,b,c,d
from
a
where
索引字段=值,這個(gè)索引字段最好是數(shù)值型數(shù)據(jù)
2.慢有更多情況,
情況1:遠(yuǎn)程查詢,其實(shí)可能查詢不慢,由于數(shù)據(jù)量大,傳輸過(guò)程慢
情況2:WHERE
后面的比較數(shù)據(jù)太多,比如
like
類的語(yǔ)句
情況3:需要哪個(gè)字段只取那個(gè)字段就行了,比如select
*
from
a與select
b,c,d
from
a速度是有差距的
3.數(shù)據(jù)庫(kù)定期維護(hù),壓縮,把不常用的數(shù)據(jù)備份后放入備份庫(kù)里,查詢時(shí)查備份庫(kù)等
問(wèn)題補(bǔ)充:
.第一條:建立索引,怎么建立,我也聽(tīng)說(shuō)過(guò),但不知道怎么使用
答:每種數(shù)據(jù)建立索引的方法有差異,比如SQL
SERVER
2000中可對(duì)多個(gè)字段進(jìn)行索引,比如SQL
SERVER2000中有命令
CREATE
INDEX
為給定表或視圖創(chuàng)建索引。
只有表或視圖的所有者才能為表創(chuàng)建索引。表或視圖的所有者可以隨時(shí)創(chuàng)建索引,無(wú)論表中是否有數(shù)據(jù)。可以通過(guò)指定限定的數(shù)據(jù)庫(kù)名稱,為另一個(gè)數(shù)據(jù)庫(kù)中的表或視圖創(chuàng)建索引。
語(yǔ)法
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
}
第三條:數(shù)據(jù)庫(kù)定期維護(hù),壓縮:怎么個(gè)壓縮法?及時(shí)備份數(shù)據(jù)到備份庫(kù)查詢備份庫(kù),那查詢時(shí)不是還慢嗎?
答:這個(gè)有壓縮工具,基本上每種數(shù)據(jù)庫(kù)都有自己的壓縮數(shù)據(jù)庫(kù)的工具
function get_category($id){
$str=array();
//$sql = "select * from biao where id=$id";查詢節(jié)點(diǎn),自己寫(xiě)吧
$result = array('id'=,'parent_id'=);//查詢結(jié)果一個(gè)數(shù)組格式
if($result){
$str = get_category($result['parent_id']);
$str[]=$result;
}
return $str;
}
}
調(diào)用get_category()就行了,$str第一個(gè)元素是節(jié)點(diǎn)本身,去掉就行了。
文章題目:php遞歸查詢數(shù)據(jù)庫(kù)不卡的簡(jiǎn)單介紹
網(wǎng)頁(yè)路徑:http://chinadenli.net/article0/dsidgoo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、品牌網(wǎng)站制作、虛擬主機(jī)、網(wǎng)站制作、品牌網(wǎng)站建設(shè)、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)