【发布时间】:2021-09-21 04:09:53
【问题描述】:
我正在尝试使用单个 mysql 查询从 mysql 数据库中提取两层数据,然后使用 php while 循环按顶层分组显示它。
<?php $org = "1";
$row1 = mysqli_prepare($db,"SELECT * FROM menu WHERE org = ? ORDER BY mid DESC");
$row1->bind_param("s", $org);
mysqli_stmt_execute($row1); $row2 = mysqli_stmt_get_result($row1);
while($row = mysqli_fetch_array($row2)){ ?>
<div class="category"><?php echo $row["item"]; /* GROUPED*/?>
<div class="item"><?php echo $row["item"]; /* INDIVIDUAL ITEM*/?></div>
</div>
<?php }; ?>
| mid | parent | org | item | price |
|---|---|---|---|---|
| 1 | 1 | Category 1 | ||
| 2 | 1 | 1 | Item 1 | $10 |
| 3 | 1 | 1 | Item 2 | $12 |
| 4 | 1 | Category 2 | ||
| 5 | 4 | 1 | Item 3 | $12 |
| 6 | 4 | 1 | Item 4 | $90 |
显然,每个项目只会出现一次,但类别也会出现与基础项目一样多的次数。但是,在代码中,我需要将所有项目分组在同一父类别下。有什么想法吗?
想要的结果
| List |
|---|
| Category 1 |
| - Item 1 |
| - Item 2 |
| Category 2 |
| - Item 3 |
| - Item 4 |
或者就 HTML 代码输出而言:
<div class="category">Parent Category 1<br>
<div class="item">Item 1</div>
<div class="item">Item 2</div>
</div>
<div class="category">Parent Category 3<br>
<div class="item">Item 3</div>
<div class="item">Item 4</div>
</div>
【问题讨论】:
-
能否以文本形式提供您的数据,请参阅meta.stackoverflow.com/questions/285551/…
-
为什么你认为 $row["item"] 会在同一个块中输出不同的结果?
-
另外,这条线实际上是做什么的? >>> mysqli_stmt_execute($row1); $row2 = mysqli_stmt_get_result($row1);
-
@BrokenArrow 他想要一个流控制,这样他就可以在 e 或其他上显示
-
@nbk 有点意思。那么,不能通过 LIMIT 子句获取两行以通过单次执行来实现相同的目的吗?