我无法将所有子菜单项都显示在http://www.mattmaclennan.co.uk/a2的“新摩托车”部分中。例如,冒险应该有三个选择,而不是一个。这是我使用的代码。

<?
$output = mysqli_query("SELECT * FROM bikes, bikeTypes WHERE bikes.model_id = bikeTypes.model_id GROUP BY bikeTypes.model_id");
while($row = mysqli_fetch_array($output))
 {
   echo "<li><a href='test.php?id=" . $row['model_id'] . "'>".$row['model'].'</a><ul>';
   echo "<li><a href='details.php?id=" . $row['bike_id'] . "'>" . $row['bikeName'] . "</a></li>";
   echo '</ul>';
   echo '</li>';
 }
//var_dump($result);
?>


有想法吗?谢谢!

编辑:这是来自phpMyAdmin的两个表的结构:

bikeTypes表:
bike types table http://www.mattmaclennan.co.uk/a2/images/bikeTypesTable.jpg

自行车桌:
bikes table http://www.mattmaclennan.co.uk/a2/images/bikesTable.jpg

最佳答案

尝试这个:


  从bikeTypes左加入自行车中选择SELECT bikeTypes.id,bikeTypes.name,bikes.name,bikes.id
  bikes.model_id = bikeTypes.model_id


如果您看到我编写的查询中包含LEFT JOIN,那么数据库引擎会将您正在执行的操作视为INNER JOIN

但是你需要的是

 $output = mysqli_query("SELECT * FROM bikeTypes");
    while($row = mysqli_fetch_array($output))
     {

       echo "<li><a href='test.php?id=" . $row['model_id'] . "'>".$row['model'].'</a><ul>';
       $subcat = mysqli_query("SELECT * FROM bikes WHERE model_id = $row['model_id']");

       while($rowSub = mysqli_fetch_array($subcat)){
       echo "<li><a href='details.php?id=" . $rowSub['bike_id'] . "'>" . $rowSub['bikeName'] . "</a></li>";
       }
       echo '</ul>';
       echo '</li>';

 }


只要看看您想关闭ul和li的位置即可。

关于php - MySQL查询中只有一个选项未显示,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13208938/

10-10 13:19