PHP从数据库中为每个日期打印日期数据

Posted

技术标签:

【中文标题】PHP从数据库中为每个日期打印日期数据【英文标题】:PHP Print Date data from database for each date 【发布时间】:2016-05-18 02:56:57 【问题描述】:

我有一个名为Holidays 的数据库,它有一个用于保存假日日期的日期字段,称为STARTTIME,还有一个用于保存假日天数的持续时间字段,称为DURATION。我想从该表中收集某个月份和年份之间的所有数据,并按 1 打印日期。

例如,这是我在数据库中的数据:

STARTTIME  | DURATION
2016-12-09 | 1
2016-12-15 | 5

如何以 php 1 by 1 每个日期打印它?所以会产生这样的结果:

2016-12-09
2016-12-15
2016-12-16
2016-12-17
2016-12-18
2016-12-19
2016-12-20

我现在的代码是这样的:

//startDate and endDate is get from my filter, this is only for example 
$startDate = '2016-01-01';
$endDate = '2016-01-31';
$sqlHol = "SELECT STARTTIME, DURATION FROM HOLIDAYS WHERE DATEVALUE(STARTTIME) BETWEEN DateAdd('m',-1,#$startDate#) AND #$endDate#";
$queryHol = $db->query($sqlHol);
$hols = $queryHol->fetchAll();
echo '<br />';
//testing to print out array result
print_r($hols);
//looping through data from database
foreach($hols as $hol)

    for($i=1; $i <= $hol[1]; $i++)
    
        echo '<br />';
        $due = date_create($hol[0]);
        echo date_format($due, 'Y-m-d');
        $due = date_add(date_create($hol[0]), date_interval_create_from_date_string('1 days'));
        echo '<br />';
    

这是我的结果(日期不会增加):

2015-12-09

2015-12-15

2015-12-15

2015-12-15

2015-12-15

2015-12-15

2015-12-15

有人知道如何创建我需要的输出吗?

【问题讨论】:

您的 for 循环中有两个 &lt;br&gt; 标签,请尝试删除第一个。 另外,不要养成以这种方式执行查询的习惯,这是不安全的。搜索 PDO。 @lampwins 抱歉,这只是为了输入...问题是我的日期不算数...因为您总是可以看到 15...我不能使用 PDO,我不不知道为什么如果我使用 ms.access 我不能使用 PDO...而且这个应用程序只用于一个人,所以我并没有真正考虑过安全... 【参考方案1】:

看起来您是在增加到期日期之前写的。尝试使用循环计数器来跟踪您增加了日期的次数。

foreach($hols as $hol)

    for($i=0; $i <= $hol[1]-1; $i++)
    
        echo '<br />';
        $due = date_create($hol[0]);
        $due = date_add(date_create($hol[0]), date_interval_create_from_date_string(i.' days'));
        echo date_format($due, 'Y-m-d');
        echo '<br />';
    

【讨论】:

更好...但是我的结果,在第 9 天,它也在计数...所以结果是这样的:2015-12-09, 2015-12-10, 2015- 12-11、2015-12-15、2015-12-16、2015-12-17、2015-12-18、2015-12-19、2015-12-20。 没问题,我解决了这个问题...您的代码位于:$hol[1]+1 应该是 $hol[1]。我相信没有其他错误...非常感谢 我错了,把$hol[1]+1改成$hol[1]-1 完全正确...我刚刚写了... :D

以上是关于PHP从数据库中为每个日期打印日期数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在 R 中为日期添加时间(午夜)并在没有 1 或 2 小时班次的情况下打印它?

如何在 mongodb 中为新日期创建新对象?

SQL (RedShift):从时间戳列中为每个月选择不同的日期

在 SQL 中为日期分配序号

如何在 sql server 2008R2/ssis 中为每个日期导出带有日期时间的单独 excel 表?

Retrive在一个价格范围从PHP阵列匹配到特定日期数据