我需要帮助。我在
下面有名为“任务”的表名
SNO Taskname parentid
---------------------
46 Task-1 0
47 Task-2 46
48 Task-3 47
49 Task-4 46
50 task-5 47
51 task-6 50
例如,我在任务第48页,现在我们将显示相关的任务编号。这样,输出结果为46,47,49,50,51
。
我尝试了下面的代码,但它不起作用:
function getTask($task_id) {
$rs=mysql_query("select task_id,taskname,p_id from task where task_id='".$task_id."'");
$rs_req=mysql_fetch_array($rs) or die(mysql_error());
$reqt=$rs_req['p_id'];
return $reqt;
}
$task = getTask($task_id);
$pid = $task;
$related_tasks = [];
while ($pid != 0) {
$pid = getTask($pid);
$relatedTasks[] = $pid;
}
print_r($relatedTasks);
答案 0 :(得分:1)
关系数据库并不意味着处理递归查询。
您可以通过选择ID为48的第一行,然后递归检查parentId!= 0并执行另一个查询(如果是)来执行此操作。像
这样的东西$task = getTask(48);
$related_tasks = [];
while( $task['parentID'] != 0) {
$task = getTask( $task['parentId']);
$relatedTasks[] = $task;
}