gpt4 book ai didi

javascript - 有没有办法将一系列日期插入到mysql数据库表中

转载 作者:行者123 更新时间:2023-12-02 23:52:56 25 4
gpt4 key购买 nike

我正在使用一个表格,供用户通过我的网站预订假期住宿,预订详细信息包括公寓、入住、退房日期以及使用日期差异函数计算的总天数。我还使用 for 循环在 checkin 和 checkout 日期之间进行迭代,然后生成一系列日期。问题是,当我对 mysql 执行插入查询时,只有范围内的结束日期被插入到数据库表中。我的目标是将整个范围插入到 mysql 中,以便我禁用日期选择器上已经预订的日期。有人可以告诉我我做错了什么吗,请参阅下面的代码。

我已经尝试使用日期期间对象,并探索了 phpmyadmin 中日期范围字段的所有数据类型。

我还尝试使用单独的表格来表示日期范围

if(isset($_POST['apmt'])){

$value = $_POST['apmt'];
$ds = $_POST['ds'];
$de = $_POST['de'];
$d = $_POST['d'];


try{
$dateb = $de;
$datea = $ds;

for ($i = $datea; $i <= $dateb; $i++)
{
$dr = date("Y-m-d", strtotime($i));
}


$query = "INSERT INTO bookings SET apmt = :apmt, dateStart = :dateStart, dateEnd = :dateEnd, dateRange = :dateRange, totalDays = :totalDays, date = NOW(), clientID = '".$_SESSION['ID']."' ";
$s = $pdo->prepare($query);
$s->bindvalue(":apmt", $value);
$s->bindvalue(":dateStart", $ds);
$s->bindvalue(":dateEnd", $de);
$s->bindvalue(":dateRange", $dr);
$s->bindvalue(":totalDays", $d);
$s->execute();

$id = $pdo->lastInsertId();

if($id > 0 ){

$table = "";
$table .= '<table style="text-align:center;width:100%;margin:auto"><tr><th>APARTMENT</th><th>DATE START</th><th>DATE END</th><th>DAYS</th></tr>';
$table .= '<tr><td>' .$value. '</td>';
$table .= '<td>' .$ds. '</td>';
$table .= '<td>' .$de. '</td>';
$table .= '<td>' .$d. '</td>';
$table .= '</tr></table>';
echo $table ."</br>";

}

}
catch (PDOException $e) {
$output = "Unable to connect to database server" . $e->getMessage();
echo "$output";
exit();
}

}

最佳答案

因此,您定义的问题来自于您的 for 循环给出了意外的结果,您在每次迭代后重新分配 $br 的值,这就是为什么循环完成后,您将在 $br 中存储最后的日期。

我推荐以下解决方案,因为它将是最容易操作的解决方案,并为您提供最干净的代码。通过将 $br 替换为 Array,您可以在每次迭代后向其中追加一个项目。插入数据库时​​,使用 implode 函数将让您以您想要的方式对其进行字符串化,而无需使用 hacky 字符串操作。

$dr = [];
for ($i = $datea; $i <= $dateb; $i++)
{
array_push($dr, date("Y-m-d", strtotime($i)));
}

现在,当您要插入到表中时,请按如下方式引用该数组:

$drString = implode(',', $dr) # (String) "date,date,date,date"

进一步建议

如果您使用问题中稍微暗示的 SQL 日期架构,则存储范围不是它们的默认值。因此,存储为 TextVarchar 可能是您的最佳选择,然后迭代范围字符串(“日期、日期、日期”)并创建新的 <分别表示每个分解字符串的strong>日期 PHP 对象。

关于javascript - 有没有办法将一系列日期插入到mysql数据库表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55562526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com