我无法在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