php - 在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 |
+--------------------------------------------------+
解决方案
正如 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
推荐阅读
- android - 如何在 Jetpack compose 中创建圆角 BottomDrawer(又名 Modal Bottom Sheet)
- node.js - 如何在strapi.io中为用户分配“作者”角色?
- php - Laravel:过时的存档功能,引发错误
- react-native - 无效调用挂钩错误,但挂钩似乎有效
- visual-studio-code - 为什么我的 Visual Studio Code 终端滞后并在延迟后执行程序?
- android - 错误:包 android.support.v7.widget 不存在 import er
- javascript - 如果“centeredSlides:true”不起作用,如何使活动幻灯片居中?
- python - Mypy - 为什么 TypeVar 在没有指定边界的情况下不起作用
- android - Jetpack Navigation如何获取上一个对话框/片段的ID
- java - 无法写入导入的 SQLite 数据库 Android