Php While循环只返回第一行值

Php While循环只返回第一行值,php,while-loop,Php,While Loop,对于我的树类别,我使用以下代码,但似乎存在问题,因为它只返回第一行的值: <?php function display_children($parent, $level) { $result = mysql_query("SELECT * FROM `category` WHERE `parent`='$parent'"); while ($row = mysql_fetch_array($result)) { $title = $row['title

对于我的树类别,我使用以下代码,但似乎存在问题,因为它只返回第一行的值:

<?php
function display_children($parent, $level) { 
    $result = mysql_query("SELECT * FROM `category` WHERE `parent`='$parent'"); 
    while ($row = mysql_fetch_array($result)) { 
        $title = $row['title'];
        $id = $row['id'];
        $results .= str_repeat('-> ',$level).$title;
        display_children($id, $level+1); 
    } 
    return $results;
}
display_children(0,0); 
?>

我看到您没有对其中的递归函数调用返回执行任何操作。具体来说,我认为您的意思是将这些结果添加到
$results
变量中

试试这个:

<?php
function display_children($parent, $level) { 
    $result = mysql_query("SELECT * FROM `category` WHERE `parent`='$parent'"); 
    $results = '';
    while ($row = mysql_fetch_array($result)) { 
        $title = $row['title'];
        $id = $row['id'];
        $results .= str_repeat('-> ',$level).$title;
        $results .= display_children($id, $level+1); 
    } 
    return $results;
}
echo display_children(0,0); 
?>

我看到您没有对其中的递归函数调用返回执行任何操作。具体来说,我认为您的意思是将这些结果添加到
$results
变量中

试试这个:

<?php
function display_children($parent, $level) { 
    $result = mysql_query("SELECT * FROM `category` WHERE `parent`='$parent'"); 
    $results = '';
    while ($row = mysql_fetch_array($result)) { 
        $title = $row['title'];
        $id = $row['id'];
        $results .= str_repeat('-> ',$level).$title;
        $results .= display_children($id, $level+1); 
    } 
    return $results;
}
echo display_children(0,0); 
?>

函数的结果丢失。 替换:

致:

最后还显示结果:

echo display_children(0,0); 

功能的结果丢失。 替换:

致:

最后还显示结果:

echo display_children(0,0); 

永远不要将
查询
放在循环中,或者更糟糕的是,放在递归函数中。有100种方法可以做得更好。永远不要将
查询
放在循环中,或者更糟糕的是,放在递归函数中。有100种方法可以做得更好。