MYSQL TABLE
|id|parent_id|
|1 | 0| <- depth 1
|2 | 1| <- depth 2
|3 | 1| <- depth 2
|4 | 2| <- depth 3
|5 | 3| <- depth 3
|6 | 4| <- depth 4
我需要找出id 4的深度,在上面的例子中它是3
是否可以使用一个mysqli查询执行此操作? 如果没有,我怎么能用多个mysqli查询呢?
非常感谢。
EDITED
function find_depth($id, $depth = 0){
global $con;
$query = "SELECT * from table WHERE `id` = $id";
if ($result = $con->query($query)){
if (mysqli_num_rows($result) == 1){
$row = $result->fetch_array();
$depth = $depth + 1;
find_level($row['parent_id'], $depth);
} else {
return $depth;
}
}
}
find_depth('4')
会给我3个
但是,我仍然在寻找更好的方法来实现这个目标
答案 0 :(得分:0)
如果表格不大,则只能对DB进行一次查询
function find_depth($id, $depth = 0) {
global $con;
$temp = array();
$query = "SELECT * from table";
if ($result = $con->query($query)) {
while($row = $result->fetch_array())
$temp[$row['id']] = $row['parent_id'];
do { $depth = $depth + 1; } while($id = $temp[$id]);
}
return $depth;
}
find_depth('4');