Php PDO rowCount () devuelve resultado incorrecto

Tengo una función para obtener la ruta en una estructura de árbol de datos.

De acuerdo con mi tabla en DB, la raíz no debería obtener ningún resultado cuando consultosub_id='root_id'

Cuando solo paso la raíz, el rowCount devuelve el resultado correcto que es0. Sin embargo, cuando paso un nodo del rango inferior (3 °), al final del recursivo que es root, rowCount return 1?

PD

Yo uso Mysql como DB

Esta es mi mesa

main_id | sub_id
----------------    
    1   |    2    
    1   |    3    
    2   |    4    
    3   |    5

El código:

$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);
        }
    }

}

Si solo pasoget_path($stmt,1,$map); (la raíz)

La salida:

1 found 0

pero cuando por ejemplo paso4 en ella la salida se convierte en:

4 found 1
2 found 1
1 found 1 <= it should found 0

¿Por qué?

Respuestas a la pregunta(3)

Su respuesta a la pregunta