PHP递归查询脚本

PHP递归查询脚本,php,function,recursion,Php,Function,Recursion,我想创建一个递归查询脚本,输出ID\u Col2,它将用作下一个递归查询的参数。我的代码实际上只在第一个周期停止: function recursiveQuery ( $ID, $numRows ) { for($i=0;$i<=$numRows;$i++) { $dbConnect = new MySqlConne

我想创建一个递归查询脚本,输出
ID\u Col2
,它将用作下一个递归查询的参数。我的代码实际上只在第一个周期停止:

function recursiveQuery ( $ID, $numRows ) {                                         
  for($i=0;$i<=$numRows;$i++) {                                         
    $dbConnect = new MySqlConnect();
    $dbConnect->connect();      
    $query = $dbConnect->query("SELECT ID_Col1, ID_Col2 FROM wbs WHERE ID_Col1 = '" . $ID . "' AND ID_Col2 != '0' ORDER BY ID ASC");
    $n = mysql_num_rows($query);
    $result = $dbConnect->extractObject($query);    

    for($x=0;$x<count($result);$x++){
      $r = $result[$x]->ID_Col2;
      echo $r . '<br>';
      return recursiveQuery( $r, $n );
    }

    $dbConnect->disconnect();                                               
  }
}

echo recursiveQuery( '6765', '25' );
函数递归查询($ID,$numRows){
对于($i=0;$iconnect();
$query=$dbConnect->query(“从wbs中选择ID_Col1,ID_Col2,其中ID_Col1='”“$ID.”和ID_Col2!='0'按ID ASC排序”);
$n=mysql\u num\u行($query);
$result=$dbConnect->extractObject($query);
对于($x=0;$xID_Col2;
回音$r.“
”; 返回递归查询($r,$n); } $dbConnect->disconnect(); } } echo递归查询('6765','25');

那么,我应该如何修改此脚本以使其工作?

您可以递归地打开数据库连接…:

function recursiveQuery ( $ID, $numRows ) {
  $dbConnect = new MySqlConnect();
  $dbConnect->connect();   
  
  for($i=0;$i<=$numRows;$i++) {
    // [...]    

    for($x=0; $x < count($result); $x++){
      // [...]
      return recursiveQuery( $r, $n );
    }

    $dbConnect->disconnect();                                               
  }
}
函数递归查询($ID,$numRows){
$dbConnect=new MySqlConnect();
$dbConnect->connect();
对于($i=0;$idisconnect();
}
}
我不能告诉你如何使它工作,因为它不应该工作

您应该在代码的递归部分之外打开/关闭连接


编辑 正确代码:

function recursiveQuery ( $ID, $numRows, $dbConnect ) {
  for($i=0;$i<=$numRows;$i++) {
    // [...]    

    for($x=0; $x < count($result); $x++){
      // [...]
      // here you don't want to return but just to execute :
      recursiveQuery( $r, $n, dbConnect);
    }                                             
  }
}

function wrapFunc($ID,$numRows) {
  $dbConnect = new MySqlConnect();
  $dbConnect->connect();
  // nothing is returned by your function (echos directly in the code)
  recursiveQuery ( $ID, $numRows, $dbConnect);
  $dbConnect->disconnect();
}

wrapFunc('6765','25');
函数递归查询($ID、$numRows、$dbConnect){

对于($i=0;$i在这里我找到了最好的答案:

在递归函数中循环查询数据库似乎是一个非常糟糕的主意。当然有更好的方法来完成您想要做的事情,但您必须明确指定您想要做的事情。您能澄清一下吗?
wbs
中包含了什么?确切的输出是什么但你不想回答,但你真的应该使用PDOdatabases@Segiu我有两列,其中有两个ID。第一列是父亲,第二列是儿子。儿子也可以是父亲。因此,我想在下一个查询中使用ID_Col2作为参数,以获取树结构中的所有儿子。您将在每一列上打开一个新的DB连接递归。这是完全错误的。@SergiuParaschiv这正是我在这里展示的问题。