如何从PHP插入日期到MySQL

时间:2016-01-19 11:38:11

标签: php mysql

我无法将日期(甚至是我的整个表单)插入到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"。这是我在数据库中的表格: Table Order

我无法找到问题所在。 我更新了代码并按照你的建议,但仍然一无所获:( 这里是代码:

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);
}

7 个答案:

答案 0 :(得分:3)

您必须将日期格式设置为“ YYYY-MM-DD HH:ii:ss ”。因为mysql使用这种格式作为日期。

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

感谢。

答案 1 :(得分:1)

 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>";
    }
}

答案 2 :(得分:1)

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

YYYY-MM-DD

如何以此格式获取日期?

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

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

旁注:

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

答案 3 :(得分:1)

理想情况下,您需要以下日期格式: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')) {}

答案 4 :(得分:0)

$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."'";

答案 5 :(得分:0)

尝试使您的日期格式适应数据库中的日期格式。 例如:

date('Y-m-d H:i:s'); //2016-01-19 12:48:00

答案 6 :(得分:0)

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