Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP递归——增量查询变量_Php_Mysql_Recursion - Fatal编程技术网

PHP递归——增量查询变量

PHP递归——增量查询变量,php,mysql,recursion,Php,Mysql,Recursion,我有一个数据库,其中每一行都包含一个唯一的用户ID号,以及一个将他们链接到该站点的推荐人的推荐号。我正在尝试创建一个递归函数,只要它继续查找用户,就会搜索数据库,并在运行过程中执行若干计算。下面是我到目前为止所做的-我一直在尝试创建递增查询变量-请帮助 function findrepsloop($refidnum, $num){ echo "FINDREPSLOOP STARTED<br><br>"; if(strlen($refidnum) >

我有一个数据库,其中每一行都包含一个唯一的用户ID号,以及一个将他们链接到该站点的推荐人的推荐号。我正在尝试创建一个递归函数,只要它继续查找用户,就会搜索数据库,并在运行过程中执行若干计算。下面是我到目前为止所做的-我一直在尝试创建递增查询变量-请帮助

function findrepsloop($refidnum, $num){

    echo "FINDREPSLOOP STARTED<br><br>";

    if(strlen($refidnum) > 0){

        echo "FIRST STRLEN IF LOOP PASSED: $refidnum<br><br>";                  
        $totalreps++;   

        $query{$num} = "SELECT * FROM user WHERE (refidnum = '$refidnum' && active = 'YES') ";
        $result{$num} = mysql_query($query{$num});
        $line{$num} = mysql_fetch_array($result{$num}, MYSQL_NUM);                  
        $total{$num} = mysql_num_rows($result{$num});

        echo "QUERY $num found $total{$num} rows in the database. LINE 0: '$line{$num}[0]<br><br>";

        $totaltemp = 0;
        if($total{$num} > 2){ $totaltemp = $total{$num} / 3; $totaltemp = floor($totaltemp); }else{}                    
        $numberofthrees = $numberofthrees + $totaltemp;                     

        while(strlen($line{$num}[0]) > 0){

            $refidnum = $line{$num}[0];
            $num++;
            findrepsloop($refidnum, $num);

            $line{$num} = mysql_fetch_array($result{$num}, MYSQL_NUM);
        }

    }else{

    }   

}

您是否正在尝试获取$line数组中的所有结果?问题在于它是每个递归级别的局部。如果您希望它们都共享相同的变量,则必须通过引用传递或使用全局变量。您确实应该考虑更改数据库设计。MySQL不支持递归函数,因此它不适合这种表示分层数据的邻接列表模型。相反,请查看嵌套集和可传递闭包表模型,这两种模型都可以让您在瞬间解决此问题。”的演示文稿提供了对所有选项的极好概述。下面是手动工作的代码示例: