如何从三个表中获取主、子和子类别。 PHP MYSQLI

How to fetch main, sub and child categories from three tables. PHP MYSQLI

我正在做一个项目,我想在其中使用类别及其子类别和子类别,我创建了 3 个表(MainCats、SubCats、ChildCats)。 现在我想从这些表中获取数据并存储在 HTML 选项中。 这是代码 PHP、MYSQLI 和 HTML 代码。

$cat_fetch = "SELECT  categories, sub_categories, child_categories FROM categories.maincatSd, sub_categories.subcat_name, child_categories.child_cat_name";
            $cat_run = mysqli_query($con, $cat_fetch);
             echo "<option value='' >ڪيٽيگري چونڊيو</option>";
             if(mysqli_num_rows($cat_run) >0){
                 while($cat_row = mysqli_fetch_array($cat_run)){
                     $cat_name = $cat_row['child_cat_name'];
                     $cat_name = $cat_row['subcat_name'];
                     $cat_name = $cat_row['maincatSd'];

                     //$cat_name = $cat_row['subcat_name'];



                     echo "<option value='".$cat_name."' ".((isset($Catagory) and $Catagory == $cat_name)?"selected":"")." >".ucfirst($cat_name)."</option>";
                             }

                         }else{
                                echo "<option name='Catagory' tabindex='2' id='Catagory' value=''>NoCat</option>";       
                         }

为什么不使用 3 个不同的查询和嵌套循环来做到这一点..

SELECT * FROM main_cat
// Loop query result
   SELECT * FROM sub_cat WHERE sub_cat_id = main_cat_id
   // Loop query result
      SELECT * FROM child_cat WHERE child_cat_id = sub_cat_id
      // Loop query results

根据您给定图像的输出。我认为您在从表中获取记录时不需要维护任何类型的关系。它只需要从这三个表中获取记录并构建选项列表并在网页上打印显示。如果这正是您想要的,请查看此内容。

<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');

// Connect to DB
$mysqli = new mysqli('127.0.0.1', 'host', 'password', 'DB_Name');

if ($mysqli->connect_errno) {
    echo "Error: Failed to make a MySQL connection, here is why: \n";
    echo "Errno: " . $mysqli->connect_errno . "\n";
    echo "Error: " . $mysqli->connect_error . "\n";
    exit;
}

// ---Fetch all main category records---
$sql = "SELECT * FROM main_cat";
if (!$result = $mysqli->query($sql)) {
    echo "Errno: " . $mysqli->errno . "\n";
    echo "Error: " . $mysqli->error . "\n";
    exit;
}

$totRecordsMainCat= array();
if($result->num_rows){
    while($dataSource = $result->fetch_assoc()){
        $totRecordsMainCat[] = $dataSource;
    }
}

// ---Fetch all Sub category records---
$sql = "SELECT * FROM sub_cat";
if (!$result = $mysqli->query($sql)) {
    echo "Errno: " . $mysqli->errno . "\n";
    echo "Error: " . $mysqli->error . "\n";
    exit;
}

$totRecordsSubCat= array();
if($result->num_rows){
    while($dataSource = $result->fetch_assoc()){
        $totRecordsSubCat[] = $dataSource;
    }
}

// ---Fetch all Child category records---
$sql = "SELECT * FROM child_cat";
if (!$result = $mysqli->query($sql)) {
    echo "Errno: " . $mysqli->errno . "\n";
    echo "Error: " . $mysqli->error . "\n";
    exit;
}

$totRecordsChildCat= array();
if($result->num_rows){
    while($dataSource = $result->fetch_assoc()){
        $totRecordsChildCat[] = $dataSource;
    }
}

?>

<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>

<?php
    echo "<select>";
        echo "<option value=''>Select Category</option>";

        foreach ($totRecordsMainCat as $key => $value)
        {
            $cat_name = $value['cat_name'];
            echo "<option value='$cat_name'>$cat_name</option>";
        }

        foreach ($totRecordsSubCat as $key => $value)
        {
            $cat_name = $value['subcat_name'];
            echo "<option value='$cat_name'>$cat_name</option>";
        }

        foreach ($totRecordsChildCat as $key => $value)
        {
            $cat_name = $value['childcat_name'];
            echo "<option value='$cat_name'>$cat_name</option>";
        }
    echo "</select>";
?>
</body>
</html>