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

如何从三个表中获取主类别、子类别和子类别。PHP MYSQLI,php,mysqli,categories,Php,Mysqli,Categories,我正在从事一个项目,在这个项目中,我想使用类别及其子类别和子类别,我创建了3个表MainCats、SubCats和ChildCats。 现在,我想从这些表中获取数据,并将其存储在HTML选项中。 下面是PHP、MYSQLI和HTML代码 $cat_fetch = "SELECT categories, sub_categories, child_categories FROM categories.maincatSd, sub_categories.subcat_name, child_cat

我正在从事一个项目,在这个项目中,我想使用类别及其子类别和子类别,我创建了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>

您面临的问题是什么?结果只获取了一个表的数据。这不是我们所说的非常好的数据库结构:/如图所示。您将sub_cat链接到main_cat,这很好,但是sub_child链接到了?。。。您应该看看,因为它可以帮助您链接所有表、所有数据,并在一个查询中获得所有结果。我不想连接它们,只想检索选项中类别的所有值。