我编写了一个PHP代码来查找一个类别的父类并回显parent_id
它工作得很好,但是如果这个父对象有一个父对象,我需要它一直循环,直到找到应该有category_parent = 0的主父对象,有人能告诉我怎么做吗?
菲律宾比索

$query_rsCategoryId = "SELECT * FROM categories
WHERE category_id = '".$_REQUEST['category_id']."'";
$rsCategoryId = mysql_query($query_rsCategoryId, $connection);
$row_rsCategoryId = mysql_fetch_assoc($rsCategoryId);

do {
    $query_rsParent = "SELECT * FROM categories
          WHERE category_id = '".$row_rsCategoryId['category_parent']."'";
    $rsParent = mysql_query($query_rsParent, $connection);
    $row_rsParent = mysql_fetch_assoc($rsParent);
    $totalRows_rsParent = mysql_num_rows($rsParent);

    if ($totalRows_rsParent > 0 ){
      echo $row_rsParent['category_id'];
    }
} while ($row_rsCategoryId = mysql_fetch_assoc($rsCategoryId));

最佳答案

function getParent($id) {
  $query_rsCategoryId = "SELECT * FROM categories
  WHERE category_id = '".$_REQUEST['category_id']."'";
  $rsCategoryId = mysql_query($query_rsCategoryId, $connection);
  $row_rsCategoryId = mysql_fetch_assoc($rsCategoryId);
  $parent = $row_rsCategoryId['category_parent'];
  if (mysql_num_rows($rsCategoryId) < 1) {
    // Error handling, entry with id $id not found
    return null;
  }
  if ($parent == 0) {
    return $id;
  } else {
    return getParent($parent);
  }
}

免责声明:未经任何测试。
但是,这假设如果您的条目没有父项,则它是自己的父项。
当然,mysql_*也被弃用。确保查看mysqliPDO
请注意,这可能会导致一个巨大的IO瓶颈,因为我们对跟踪的每一步都执行一个查询
编辑:使用POST参数:
echo getParent($_GET['category_id']);

假设你设置了get param。

10-07 23:28