Yes, the output from _dml_getData() is an array which is indexed by row number, so $rowdata[0] would give you the first row and $rowdata[1] would give you the second row.
What you need to do is to print a trace from each of your two pieces of code to see exactly what sql query was issued and what results were returned. Only when you can compare the two traces will you be able to see where the dfference is.
You need to include the following lines somewhere in your code:
and
print_r($children_rowdata);