PHP MySql循环遍历所有子ID

时间:2016-09-27 17:51:26

标签: php mysql

我有MySql数据库,其中包含有关已保存文件和文件夹结构的信息。

有一个名为" Folder"其中包含" ID","名称"和" ParentID"。

基本上我需要做的是遍历所有子文件夹和子文件夹的子文件夹,并收集他们的ID,直到没有剩余的子文件夹为止。

目前我有PHP脚本,其中包含名为GetChilds($parentId)的函数。 函数运行SQL查询,该查询收集ParentID为$parentID的所有文件夹ID。之后,foreach循环再次使用找到的ID调用相同的函数。

这可以正常工作,但它非常慢,我读过,不推荐在PHP循环中放置查询。

所以我正在寻找的是使用SQL脚本或PHP以更有效的方式执行相同功能的替代方法。

编辑:

这是我的代码:

private function FetchData($query, $query_params, $dbConnection)
{
    try
    {
        $stmt = $dbConnection->prepare($query); 

        if(count($query_params) > 0)
            $stmt->execute($query_params); 
        else
            $stmt->execute();

            return $stmt->fetchAll();
    }
    catch(PDOException $e)
    {
        //Handle error
    }
}

private function GetChilds($parentId, $connection)
{
    $childFolders = $this->FetchData("select idFolder from Folder where ParentId = :parentId", array(":parentId" => $parentId), $connection);

    //Save ID's

    foreach($childFolders as $child)
    { 
        $this->GetChilds($child['idFolder'], $connection);
    }
}

1 个答案:

答案 0 :(得分:0)

如果您使用的是PHP,则可以将批量查询保存到数组中。然后你可以根据需要操纵它。 它快得多。