首页 > 解决方案 > 在while循环中拆分结果

问题描述

在这里,我使用查询来获取许可证号的最后两个冲突发生日期,如下所示:

<?php
$licence=$_POST['licence'];
$sel=mysqli_query($con,"select cdate from tblcollision where licence_number='$licence'");
while($s=mysqli_fetch_row($sel))
{
    echo $s[2];
}
?>

我希望将结果拆分为单独的字段。这意味着文本字段中的 date1 和另一个文本字段中的 date2。其实我没有任何想法。请帮我。我的数据库设计是

+--------------------------------------------------+
|    CID    |  ID  |  LICENCE_NUMBER  |   CDATE   |
+--------------------------------------------------+
|    1      |  1   |  3/4858/2012     | 2018-02-06 |
|    2      |  1   |  3/4858/2012     | 2018-03-20 |
+--------------------------------------------------+

标签: phpmysqli

解决方案


正如 mickmackusa 所说,如果查询是针对单个许可证号进行过滤的,那么在 SQL 语句中对结果进行分组然后在 PHP 中分解结果是没有意义的。只需阅读行并根据结果日期进行计算。

但是,以更一般的方式,如果处理多个许可证,则可以在 SQL 语句中进行分组。尽管爆炸结果会增加成本,但它将简化分组过程。

您需要GROUP_CONCAT在查询中使用:

SELECT licence_number, GROUP_CONCAT(cdate) AS Events_dates
FROM tblcollision
WHERE licence_number='$licence'
GROUP BY licence_number;

这将返回:

3/4858/2012 | 2018-02-06, 2018-03-20

推荐阅读