I have a function for getting path in a tree structure data.
According to my table in DB, root should get no result when I query sub_id='root_id'
When I just pass the root the rowCount return correct result which is 0
. However when I pass a node from lower rank(3rd), in the end of the recursive which is root, rowCount return 1?
PS
I use Mysql as DB
This is my table
main_id | sub_id
----------------
1 | 2
1 | 3
2 | 4
3 | 5
The code:
$stmt = $conn->prepare("Select * from table where sub_id= ? ");
function get_path($stmt,$node,&$map){
$res=$stmt->execute(array($node));
if(!$res){ throw new Exception( implode(' ',$stmt->errorInfo()),1); }
echo $node.' found '.$stmt->rowCount().'<br>';
if($stmt->rowCount()==0){ //root
$map[]=$node;
}else{
foreach($stmt->fetchAll(PDO::FETCH_ASSOC) AS $row){
$map[]=$node;
$upper_node=$row['main_id'];
get_path($stmt,$upper_node,$map);
}
}
}
If I just pass get_path($stmt,1,$map);
(the root)
the output:
1 found 0
but when I for example pass 4
into it
the output become:
4 found 1
2 found 1
1 found 1 <= it should found 0
Why?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…