如何一次为一个客户插入多个日期条目(日期数组数据)

How to Insert multiple date entries (Date array data) at once for one client

我需要从 HTML 表单中捕获客户一次进行的多次日期访问。 所有其他数据类型都成功存储,但日期更改为默认值“1970-01-01”。

有没有一种方法可以将日期数组转换为从 HTML 表单中选择的单个日期,以避免默认日期和错误: “未定义索引:01-01-1970”。

我试过使用日期数组,但没有成功。

        <?php 
        //Post Variables
        //name="ClientID[]" 1
        //name="ClientID[]" 2
        //$ClientID = array(1,2);
        
        //name="VisitDate[]"  01-01-2021
        //name="VisitDate[]"  01-01-2020
        //$VisitDate=array('01-01-2021','01-01-2022');
        
        $ClientID=$_POST['ClientID'];
        
        $VisitDate=$_POST['VisitDate'];
            foreach ($VisitDate as $k=>$v) {
                    $VisitDate[$k] = date('Y-m-d', strtotime($v));
                }
        
        
        for ($i = 0; $i < count($ClientID); $i++) { 
        
                $ClientID=$ClientID[$i];
                
                $VisitDate=$VisitDate[$i];
                
            }
        
        $query=$con->prepare("insert into records (ClientID,VisitDate) values ('$ClientID','$VisitDate')");
        $result=$query->execute();  
        
        
        ?>

在您的 html 表单中,输入标签内使用 type="date"。例如,

<form action="post.php" method="post">
<label for="date"> Date </label>
<input name="picDate" type="date">
<input type="submit" name="submit">
</form>

日期很难管理,因为 MySQL 检查它们。现在只需将您的数据类型从数据库更改为 varchar 并删除日期转换过程。由于您使用的是日期选择器,因此用户不会以错误的格式输入日期,因为它会在数据库中被识别为 varchar。

<?php 
    //Post Variables
    //name="ClientID[]" 1
    //name="ClientID[]" 2
    //$ClientID = array(1,2);
    
    //name="VisitDate[]"  01-01-2021
    //name="VisitDate[]"  01-01-2020
    //$VisitDate=array('01-01-2021','01-01-2022');
    
    $ClientID=$_POST['ClientID'];
    
    $VisitDate=$_POST['VisitDate'];

   //Deleted the date array conversion
    
    
    for ($i = 0; $i < count($ClientID); $i++) { 
    
            $ClientID=$ClientID[$i];
            
            $VisitDate=$VisitDate[$i];
            
        }
    
    $query=$con->prepare("insert into records (ClientID,VisitDate) values ('$ClientID','$VisitDate')");
    $result=$query->execute();  
    
    
    ?>

这应该有效。