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