如何从数据库中获取菜单及其子类别

how to fetch menu from database with its subcategory

这是我的菜单

              <ul class="sub-menu">
                <li><a href="product-category.html">Product 1</a></li>
                <li><a href="product-category.html">Product 2</a>
                  <ul class="sub-menu">
                    <li><a href="product-category.html">P 21</a></li>
                    <li><a href="product-category.html">P 22</a></li>
                    <li><a href="product-category.html">P 23</a></li>
                    <li><a href="product-category.html">P 24</a></li>
                  </ul>
                </li>
                <li><a href="product-category.html">Product 3</a></li>
                <li><a href="product-category.html">Product 4</a></li>
              </ul>

Product1、Product2、Product3 是类别 table 中的类别。 P 21、P 22、P 23、P 24 是子类别中产品 2 的子类别。 所有类别都没有子类别。 保存在子类别 table.

中的类别 ID

创建 TABLE 如果不存在 category ( cid int(11) NOT NULL AUTO_INCREMENT, cname varchar(255) 不为空, 主键 (cid) ) ENGINE=InnoDB 默认字符集=latin1 AUTO_INCREMENT=1 ;

创建 TABLE 如果不存在 subcategory ( sid int(11) NOT NULL AUTO_INCREMENT, sname varchar(255) 不为空, cid int(11) 不为空, 主键 (sid) ) ENGINE=InnoDB 默认字符集=latin1 AUTO_INCREMENT=1 ;

如何通过使用单个查询从 MySql 中获取数据来在菜单中显示它?

请告诉我数据架构 base.In 一般情况下需要 2 个周期,第一个用于类别,第二个用于子类别。 file.php

<ul class="sub-menu">
<?php
 foreach($array_category as $category):?>
   <li><a href="<?php echo $category['link'];?>"><?php echo $category['name'];?></a>
     <?php  if( $exist_subcategory):?>
           <ul>
           <?php foreach($array_subcategory as $subcategory):?>
                 <li><a href="<?php echo $subcategory['link'];?>"><?php echo $subcategory['name'];?></a> 
           <?php endforeach;?>
           </ul>
           <?php endif;?> 
      </li>
      <?php endforeach;?>
    </ul>

唯一的问题是进入正确条件的条件需要知道数据库架构。

您可以通过替换表名和所有特定详细信息来使用此查询

SELECT * FROM `parenttable` p WHERE p.foreignkey IN (SELECT c.foreignkey FROM `childtable` c WHERE c.foreignkey = p.foreignkey)