如何从PHP将日期插入MySQL


how to insert date into MySQL from PHP

我无法在mySQL中插入日期(甚至我的整个表单)。这是我的代码:

    if($_SERVER["REQUEST_METHOD"]=="POST")
{
    $con = mysqli_connect('localhost','root','','e-Laundrydb');
    $tglPickup = $_POST['tglPickup'];
    $barang = $_POST['inputItems'];
    $waktuPickup = $_POST['waktuPickup'];
    $query_order = "INSERT INTO order(Barang,Tanggal_Pengambilan,Waktu_Pengambilan) VALUES('$barang','$tglPickup','$waktuPickup');";
    $result = mysqli_query($con,$query_order);
    if($result == false)
    {
        echo "<script>alert('INSERT IS NOT SUCCESS');</script>";
    }
    else
    {
        echo "<script>alert('INSERT SUCCESS');</script>";
    }
}

我在 php 中使用input type="date"。这是我在数据库中的表格:表顺序

我找不到问题出在哪里。我更新了代码并按照您的建议进行操作,但仍然没有任何:(这又是代码:

if($_SERVER["REQUEST_METHOD"]=="POST")
{
    //include('config/koneksi.php');
    $con = mysqli_connect('localhost','root','','e-laundryDB');
    //INSERT KE TABLE ORDER
    $tglPickup = date('Y/m/d', strtotime($_POST['tglPickup']));
    $barang = $_POST['inputItems'];
    $waktuPickup = $_POST['waktuPickup'];
    $query_order = "INSERT INTO 'order'(Barang,Tanggal_Pengambilan,Waktu_Pengambilan) VALUES('$barang','$tglPickup','$waktuPickup')";
    $result = mysqli_query($con,$query_order);
    if($result == false)
    {
        echo "<script>alert('INSERT IS NOT SUCCESS');</script>";
    }
    else
    {
        echo "<script>alert('INSERT SUCCESS');</script>";
    }           

mysqli_close($con);
}

您必须将日期格式设置为" YYYY-MM-DD HH:ii:ss "。 因为MySQL对日期使用了这种格式。

检查您在查询中传递的日期格式,可能存在此问题。

谢谢。

 if($_SERVER["REQUEST_METHOD"]=="POST")
{
    $con = mysqli_connect('localhost','root','','e-Laundrydb');
    $tglPickup = date('Y-m-d H:i:s',strtotime($_POST['tglPickup']));
    $barang = $_POST['inputItems'];
    $waktuPickup = $_POST['waktuPickup'];
    $query_order = "INSERT INTO order(Barang,Tanggal_Pengambilan,Waktu_Pengambilan) VALUES('$barang','$tglPickup','$waktuPickup');";
    $result = mysqli_query($con,$query_order);
    if($result == false)
    {
        echo "<script>alert('INSERT IS NOT SUCCESS');</script>";
    }
    else
    {
        echo "<script>alert('INSERT SUCCESS');</script>";
    }
}
好吧,

与您的问题相关的答案很多。根据您的数据库,您的日期列类型是 DATE 而不是 DATETIME ,因此您需要以以下格式存储值:

YYYY-MM-DD

你怎么能得到这种格式的日期?

$tglPickup = date('Y-m-d',strtotime($_POST['tglPickup']));

我认为此列Tanggal_Pengambilan是您的 DATE 列,所以我使用它。

旁注:

我不确定,您从$_POST['tglPickup']那里得到了什么样的输入,如果它合适,那么它会起作用。

理想情况下,您需要以下日期格式:Y-m-d H:i:s

您可能希望在尝试插入查询之前验证格式,这样,如果格式无效,此时可以向用户返回友好的错误消息,而不是尝试插入然后无法轻松破译出了什么问题。

这样的事情应该有效:

function validDateFormat($date, $format = 'Y-m-d H:i:s') {
    $date = DateTime::createFromFormat($format, $date);
    if ($date === false) {
        return false;
    }
    return true;
}

所以你可以这样称呼它:

$tglPickup = $_POST['tglPickup'];
if (validDateFormat($tglPickup)) {
    // Insert logic
} else {
    // Return a friendly error to the user
}

我认为用户不只是输入日期并选择它,所以你应该完全控制你收到的格式,但就我个人而言,我总是发现编程偏执狂有助于:d

希望无论如何都有帮助。

编辑:正如@devpro提到的,您使用的是Date而不是DateTime格式,您可以简单地删除我提供的示例中的H:i:s,或向函数调用添加第二个参数,即

if (validDateFormat($tglPickup, 'Y-m-d')) {}

尝试将日期格式调整为数据库中的日期格式。例如:

date('Y-m-d H:i:s'); //2016-01-19 12:48:00
$query_order = INSERT INTO order(Barang,Tanggal_Pengambilan,Waktu_Pengambilan) VALUES('$barang','$tglPickup','$waktuPickup')
INSERT order SET `Barang`='".$barang."',`Tanggal_Pengambilan`='".$tglPickup."',`Waktu_Pengambilan`='".$waktuPickup."'";
Convert 'd-m-Y' date format to 'Y-m-d' date format
$tglPickup=$_POST['tglPickup']; //d-m-Y
$tglPickup=explode('-',$tglPickup);
$tglPickup=$tglPickup[2]."-".$tglPickup[1]."-".$tglPickup[0]; //Y-m-d