Php 在while循环中拆分结果

Php 在while循环中拆分结果,php,mysqli,Php,Mysqli,在这里,我使用一个查询来获取许可证号码的最后两个冲突发生日期,如下所示: <?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]; } ?> 正如mickmackusa所说,如果查询是针对单个许

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

<?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];
}
?>

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

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

您需要在查询中使用
GROUP\u 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

您的查询容易受到注入攻击,因为您直接在查询中写入用户提交的数据。出于安全考虑,您应该使用占位符实现mysqli准备的语句。我看你的选择中只有一列。请澄清您的意图和代码。什么是
date1
date2
?你期望的结果是什么?让我们看一些示例数据。为了提高可读性,请总是用大写写mysql关键字。非常感谢示例数据和预期结果。date1和date2???您的意思是要将
年()
月()
日()
值拆分为结果集中的单独值吗?如果是这样的话,mysql对此有特殊的功能。。。这将是一个重复的问题。在您澄清问题之前,我们无法回答您的问题。结果是2018-02-06 2018-03-20。预期的结果是,我希望在两个不同的文本字段中获得两个日期,这两个字段不符合OP的要求。这实际上会增加将这些值输出到单独字段的复杂性。我希望在两个不同的文本字段中回显两个日期,以计算两个日期之间的差异。我认为,我将使用explode函数拆分结果,然后您将编写复杂/草率/粗糙的代码。没有令人信服的理由去做你正在做的事情@Akhilla展示你下面的代码块,我将向你展示这个实现有多错误。它不会增加复杂性,它避免了需要循环遍历结果。如上所述,只需分解dates字段。最好是直接在SQL查询中进行计算。
3/4858/2012 | 2018-02-06, 2018-03-20