我有问题,每个项目的数量出现在同一行。学号为1234的学生应该有他的大包数量为2,小包数量应该是3.而学生数65527应该有3大包但0小包。
下面是我使用GROUP_CONCAT
命令之前表格的显示方式:
年份不会出现在年份列,而是出现在小行列中,数量显示在不同的行上。
下面是我尝试使用GROUP_CONCAT
命令时的样子:
年份仍然没有出现在年份列中,每个行李的数量出现在同一列上。
这是我的mysql GROUP_CONCAT
命令的样子:
$sql_join = "SELECT s.student_id,s.student_name,s.student_contact,s.student_status,s.student_room, i.invstu_year, i.invstu_sem, l.location_house, GROUP_CONCAT(b.baggage_type) as 'Products', GROUP_CONCAT(i.invbag_quantity) as 'Quantity', GROUP_CONCAT(b.price) as 'Price' FROM inventory i JOIN student s on i.invstu_id = s.student_id JOIN baggage b on b.baggage_id = i.invbag_id JOIN location l on l.location_id = i.invloc_id GROUP BY i.invstu_id";
$result_join = mysqli_query($connect,$sql_join);
这就是我为table指定命令的方法:
<?php
$counter = 1;
while($row_join= mysqli_fetch_assoc($result_join))
{ ?>
<tr>
<td><?php echo $counter; ?></td>
<td><?php echo $row_join["student_name"]; ?></td>
<td><?php echo $row_join["student_id"]; ?></td>
<td><?php echo $row_join["Quantity"]; ?></td>
<td><?php echo $row_join["invstu_year"]; ?></td>
<td><?php echo $row_join["invstu_sem"]; ?></td>
<td><?php echo $row_join["location_house"]; ?></td>
</tr>
<?php
$counter++;
}
?>
我试图寻找其他例子,但找不到它。我可能会错过一些例子,如果有任何我可以参考的建议示例,我会非常感激。
答案 0 :(得分:0)
GROUP_CONCAT会将这两个值组合在同一个字符串中,如果值总是在同一个地方,您可以使用PHP Explode来拆分字符串。
像
这样的东西$Bags = explode(",", $row_join["Quantity"]);
和
<td><?php echo $Bags[0]; ?></td>
<td><?php echo $Bags[1]; ?></td>
为了澄清,它正在将值分组为“2,3”当前,作为函数爆炸将字符串拆分为数组,$ Bags变为[2,3],因此您将使用$ Bags [0]访问第一个号码,$ Bags [1]访问第二个号码。