我正在尝试使用输入内容插入日期范围内的日期
这是我在HTML中得到的
<input type="date" id="startdate" name="startdate"/> //ex. value="2018-12-18"
<input type="date" id="enddate" name="enddate"/> //ex. value="2018-12-31"
我的PHP代码是
$db = mysqli_connect('localhost', 'root', '', 'database');
if(isset($_POST['submit']))//this is my submit button
{
$startdate = $_POST['startdate']
$enddate = $_POST['enddate']
$query = "INSERT INTO appointment (date) VALUES (//i want to insert all covered date from start to end)";
mysqli_query($db, $query);
}
我的数据库表的列是id(自动递增)日期和时间表。 如何输入“ 2018-12-18至2018-12-31行中的日期”
我希望这样在我的表中输出:
| date |
|2018-12-18|
|2018-12-19|
|2018-12-20|
|2018-12-21| //so on and so fort until reach the end date
答案 0 :(得分:-1)
这是从另一个stackoverflow answer取来的。
您可以看一下DatePeriod类:
$period = new DatePeriod(
new DateTime($_POST['startdate']),
new DateInterval('P1D'),
new DateTime($_POST['enddate'])
);
应该为您提供一个包含DateTime对象的数组。
要迭代
foreach ($period as $key => $value) {
//$value->format('Y-m-d')
}
您可以像这样在一个查询中做到这一点:
$query = "INSERT INTO appointment (date) VALUES";
foreach ($period as $key => $value) {
$date = $value->format('Y-m-d');
$query .= "('$date'),";
}
哪个给你:
INSERT INTO appointment (date) VALUES('2010-10-01'),('2010-10-02'),('2010-10-03'),
('2010-10-04'),
您可能必须删除最后一个逗号。
$query = rtrim($query, ',');