【问题标题】:PHP - Get data from SQL database recursivelyPHP - 以递归方式从 SQL 数据库中获取数据
【发布时间】:2017-01-09 02:31:57
【问题描述】:

我有 2 个表 tl_docs_categories,它们是 tl_docs 的父表。 表结构为:

tl_docs_categories
[
   id,
   category_name,
   pid (give the posibility to create subcategories / pid = tl_docs_categories.id if have subcategory)
]
tl_docs
[
   id,
   doc_name,
   doc_url,
   pid(id for category)
]

所以我的数据库中有这样的东西:

我想要的是在选择红色类别时返回所有结果,我想返回所有文档和子类别名称,在我看来,我使用选择表单以红色返回所选父类别的 id。

这是我的 php 函数:

public function checkSQL($id)
{
    if(!empty($id))
    {
        /* SQL CHECK IF HAVE DOCS */
        $sqlDoc = "SELECT category_name, doc_name, doc_url FROM tl_docs_categories dc
                   LEFT JOIN tl_docs d ON dc.id = d.pid WHERE d.pid = " . $id;
        $objDocs = Database::getInstance()->query($sqlDoc);
        if ($objDocs->numRows == 0)
        {
            /* SQL CHECK IF HAVE CHILD */
            $sqlChild = "SELECT dc.id, category_name, doc_name, doc_url FROM tl_docs_categories dc
                         LEFT JOIN tl_docs d ON dc.id = d.pid WHERE dc.pid =" . $id;
            $objDocs = Database::getInstance()->query($sqlChild);
                return $objDocs;
            }
        }
        else
        {
            return $objDocs;
        }
    }
}

我有点迷茫,我没有解决方案来递归地执行此操作并返回每个类别、子类别、子子类别等的数据。

提前感谢您的帮助。

【问题讨论】:

  • 对不起,我不明白你在寻求什么帮助!您要寻找的结果是什么
  • 我想在 recursiv 函数中转换我的函数,该函数将检查每个级别并返回所有文档、来自父类别的子类别名称,这些名称在我在视图中选择的图像上显示为红色。示例我选择最后一个红色类别:Red id = 15;绿色 id = 16;绿色 pid = 15;蓝色 id =17;蓝色 pid = 16;所以我想从我选择的类别中返回所有文档数据和类别名称,女巫是红色的。对不起我的英语:s

标签: php mysql sql recursion


【解决方案1】:

我不确定语法,但想法是在每个级别上调用checkSQL,如果要返回所有结果,则必须将$objDocs var 调整为数组。

public function checkSQL($id)
{
    if(!empty($id))
    {
        /* SQL CHECK IF HAVE DOCS */
        $sqlDoc = "SELECT category_name, doc_name, doc_url FROM tl_docs_categories dc
                   LEFT JOIN tl_docs d ON dc.id = d.pid WHERE d.pid = " . $id;
        $objDocs = Database::getInstance()->query($sqlDoc);

        if ($objDocs->numRows > 0) {
            foreach ($objDocs->fetchColumn() as $row) {
                $objDocs = $this->checkSQL($row->id);
            }
        }

        return $objDocs;
    }

    return null;
}

【讨论】:

    猜你喜欢
    • 2020-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多