我有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);
}
}
答案 0 :(得分:0)
如果您使用的是PHP,则可以将批量查询保存到数组中。然后你可以根据需要操纵它。 它快得多。