我有一个SQLite数据库,其中包含一个名为“library”的表,其中包含3个字段(12php sMb)
ID(唯一标识符)// libraryName,包含一个字符串// parentLibId,包含父库的ID。
如果库位于“root”中,则parentLibId为Null(空)
我需要一个数组,它将返回一个父节点和子节点从根开始的树。
如果没有太多代码,任何人都知道如何做到这一点?
$dbh = new PDO('sqlite:my.sqlite') or die("Error 0xDB0001");
$sth = $dbh->prepare("SELECT * FROM library");
$sth->execute();
$result = $sth->fetchAll();
我有时间处理我的朋友给出的页面限制作为一个小竞争,这部分我无法弄清楚,我使用了一个代码,但它太长了,我觉得愚蠢的XD
欢迎任何帮助,如果我不清楚,只需说出来,我会提供更多细节。
非常感谢您的帮助,非常感谢!!
祝大家晚安!
答案 0 :(得分:1)
此功能未经过测试。这是主要的想法。
getTree();
function getTree($child = null)
{
$dbh = new PDO('sqlite:my.sqlite') or die("Error 0xDB0001");
//It's just example. Security and best practice is your problem :p
if ($child)
$where = 'parentLibId = ' . $child;
else
$where = 'parentLibId IS NULL ';
$sth = $dbh->prepare("SELECT * FROM library" . $where);
$sth->execute();
if ($child)
{
$result = $sth->fetchAll()
$return = $result;
}else{ //get parents
while ($result = $sth->fetch())
{
//one by one
$return[] = array( 'parent' => $result, //parent info
'childs' => getTree($result['id']) //childs
);
}
}
return $return;
}