Php 递归数据库查询以构建ul列表
我有一个数据库表,我必须建立一个UL列表 这张桌子是这样布置的 猫id 父id(无论父id是什么,都是cat id) 猫名 猫的形象 我可以轻松获取父id为“0”的根cat 但就我的一生而言,我不知道该怎么做,所以最终的结果是 根猫 --亲子 ---孩子Php 递归数据库查询以构建ul列表,php,parent-child,Php,Parent Child,我有一个数据库表,我必须建立一个UL列表 这张桌子是这样布置的 猫id 父id(无论父id是什么,都是cat id) 猫名 猫的形象 我可以轻松获取父id为“0”的根cat 但就我的一生而言,我不知道该怎么做,所以最终的结果是 根猫 --亲子 ---孩子 函数cats(){ $sql=“从“猫”中选择*; $cats; $con=mysqli_connect($this->vars[“host”]、$this->vars[“user”]、$this->vars[“pass”]、$this->va
函数cats(){
$sql=“从“猫”中选择*;
$cats;
$con=mysqli_connect($this->vars[“host”]、$this->vars[“user”]、$this->vars[“pass”]、$this->vars[“db”]);
if(mysqli\u connect\u errno()){
打印“启动MYSQLI错误
”。
mysqli_connect_error()。
“
ENDMYSQLI错误”;
}否则{
$res=mysqli\u查询($con,$sql);
如果(mysqli_num_行($res)>0){
而($cat=$res->fetch_数组(MYSQLI_ASSOC)){
如果($cat[“父id”]=“0”){
$cats[]=$cat[“cat name”];
}
}
}
mysqli_免费_结果($res);
mysqli_close($con);
返回$cats;
}
您可以像这样解析子类别,但每次检查父类别时都需要建立sql连接:
function cats(){
$sql = "SELECT * FROM `cats";
$cats;
$con = mysqli_connect($this->vars["host"], $this->vars["user"], $this->vars["pass"], $this->vars["db"]);
if(mysqli_connect_errno()){
print "START MYSQLI ERROR<br/>".
mysqli_connect_error() .
"<br/>ENDMYSQLI ERROR";
}else{
$res = mysqli_query($con, $sql);
if(mysqli_num_rows($res) > 0){
while($cat = $res->fetch_array(MYSQLI_ASSOC)){
if($cat["parent-id"] == "0"){
$cats[$key] = $cat["cat-name"];
$sql_subCategory = "SELECT * FROM cats where parent_id=". $cat["id"];
$res_sub = mysqli_query($con, $sql_subCategory);
if(mysqli_num_rows($res_sub) > 0){
while($cat_sub = $res_sub->fetch_array(MYSQLI_ASSOC)){
$cats[$cat["cat-name"]] = $cat_sub["cat-name"];
}
}
}
}
}
mysqli_free_result($res_sub);
mysqli_free_result($res);
mysqli_close($con);
return $cats;
}
您可以像这样解析子类别,但每次检查父类别时都需要建立sql连接:
function cats(){
$sql = "SELECT * FROM `cats";
$cats;
$con = mysqli_connect($this->vars["host"], $this->vars["user"], $this->vars["pass"], $this->vars["db"]);
if(mysqli_connect_errno()){
print "START MYSQLI ERROR<br/>".
mysqli_connect_error() .
"<br/>ENDMYSQLI ERROR";
}else{
$res = mysqli_query($con, $sql);
if(mysqli_num_rows($res) > 0){
while($cat = $res->fetch_array(MYSQLI_ASSOC)){
if($cat["parent-id"] == "0"){
$cats[$key] = $cat["cat-name"];
$sql_subCategory = "SELECT * FROM cats where parent_id=". $cat["id"];
$res_sub = mysqli_query($con, $sql_subCategory);
if(mysqli_num_rows($res_sub) > 0){
while($cat_sub = $res_sub->fetch_array(MYSQLI_ASSOC)){
$cats[$cat["cat-name"]] = $cat_sub["cat-name"];
}
}
}
}
}
mysqli_free_result($res_sub);
mysqli_free_result($res);
mysqli_close($con);
return $cats;
}
这是我结束的,完全是递归的
public function cats($id){
$con = mysqli_connect($this->vars["host"], $this->vars["user"], $this->vars["pass"], $this->vars["db"]);
$cats;
if(mysqli_connect_errno()){
print "START MYSQLI ERROR<br/>".
mysqli_connect_error() .
"<br/>ENDMYSQLI ERROR";
}else{
$cats[] = $this->child($id, $con);
mysqli_close($con);
return $cats;
}
}
function child($id,$con){
$sql = "SELECT * FROM `cats` WHERE `parent-id`= '".$id."'";
// print $sql ."<br/>";
$res = mysqli_query($con, $sql);
if(mysqli_num_rows($res) > 0){
while($cat = $res->fetch_array(MYSQLI_ASSOC)){
$cats[]["cat-name"] = $cat["cat-name"];
$sql_subCat = "SELECT * FROM `cats` WHERE `parent-id` = '".$cat["cat-id"]."'";
$res_sub = mysqli_query($con, $sql_subCat);
if(mysqli_num_rows($res_sub) > 0){
while($cat_sub = $res_sub->fetch_array(MYSQLI_ASSOC)){
$cats[$cat["cat-name"]][] = $cat_sub["cat-name"] ;
$cats[$cat["cat-name"]]= $this->child($cat["cat-id"],$con);
}
}
}
}
mysqli_free_result($res_sub);
mysqli_free_result($res);
return $cats;
}
公共功能猫($id){
$con=mysqli_connect($this->vars[“host”]、$this->vars[“user”]、$this->vars[“pass”]、$this->vars[“db”]);
$cats;
if(mysqli\u connect\u errno()){
打印“启动MYSQLI错误
”。
mysqli_connect_error()。
“
ENDMYSQLI错误”;
}否则{
$cats[]=$this->child($id,$con);
mysqli_close($con);
返回$cats;
}
}
函数子项($id,$con){
$sql=“从'cats'中选择*,其中'parent id`='”$id.“”;
//打印$sql。“
”;
$res=mysqli\u查询($con,$sql);
如果(mysqli_num_行($res)>0){
而($cat=$res->fetch_数组(MYSQLI_ASSOC)){
$cats[][“cat name”]=$cat[“cat name”];
$sql_subCat=“从'cats'中选择*,其中'parent id`='”$cat[“cat id”]。”;
$res\u sub=mysqli\u查询($con,$sql\u subCat);
如果(mysqli_num_行($res_sub)>0){
而($cat\u sub=$res\u sub->fetch\u数组(MYSQLI\u ASSOC)){
$cats[$cat[“cat name”][]=$cat_sub[“cat name”];
$cats[$cat[“cat name”]=$this->child($cat[“cat id”],$con);
}
}
}
}
mysqli_免费_结果($res_sub);
mysqli_免费_结果($res);
返回$cats;
}
这是我最后说的,完全是递归的
public function cats($id){
$con = mysqli_connect($this->vars["host"], $this->vars["user"], $this->vars["pass"], $this->vars["db"]);
$cats;
if(mysqli_connect_errno()){
print "START MYSQLI ERROR<br/>".
mysqli_connect_error() .
"<br/>ENDMYSQLI ERROR";
}else{
$cats[] = $this->child($id, $con);
mysqli_close($con);
return $cats;
}
}
function child($id,$con){
$sql = "SELECT * FROM `cats` WHERE `parent-id`= '".$id."'";
// print $sql ."<br/>";
$res = mysqli_query($con, $sql);
if(mysqli_num_rows($res) > 0){
while($cat = $res->fetch_array(MYSQLI_ASSOC)){
$cats[]["cat-name"] = $cat["cat-name"];
$sql_subCat = "SELECT * FROM `cats` WHERE `parent-id` = '".$cat["cat-id"]."'";
$res_sub = mysqli_query($con, $sql_subCat);
if(mysqli_num_rows($res_sub) > 0){
while($cat_sub = $res_sub->fetch_array(MYSQLI_ASSOC)){
$cats[$cat["cat-name"]][] = $cat_sub["cat-name"] ;
$cats[$cat["cat-name"]]= $this->child($cat["cat-id"],$con);
}
}
}
}
mysqli_free_result($res_sub);
mysqli_free_result($res);
return $cats;
}
公共功能猫($id){
$con=mysqli_connect($this->vars[“host”]、$this->vars[“user”]、$this->vars[“pass”]、$this->vars[“db”]);
$cats;
if(mysqli\u connect\u errno()){
打印“启动MYSQLI错误
”。
mysqli_connect_error()。
“
ENDMYSQLI错误”;
}否则{
$cats[]=$this->child($id,$con);
mysqli_close($con);
返回$cats;
}
}
函数子项($id,$con){
$sql=“从'cats'中选择*,其中'parent id`='”$id.“”;
//打印$sql。“
”;
$res=mysqli\u查询($con,$sql);
如果(mysqli_num_行($res)>0){
而($cat=$res->fetch_数组(MYSQLI_ASSOC)){
$cats[][“cat name”]=$cat[“cat name”];
$sql_subCat=“从'cats'中选择*,其中'parent id`='”$cat[“cat id”]。”;
$res\u sub=mysqli\u查询($con,$sql\u subCat);
如果(mysqli_num_行($res_sub)>0){
而($cat\u sub=$res\u sub->fetch\u数组(MYSQLI\u ASSOC)){
$cats[$cat[“cat name”][]=$cat_sub[“cat name”];
$cats[$cat[“cat name”]=$this->child($cat[“cat id”],$con);
}
}
}
}
mysqli_免费_结果($res_sub);
mysqli_免费_结果($res);
返回$cats;
}
您要实现什么输出数组?同时显示您的类别表结构以及您要实现什么输出数组?同时显示您的类别表结构