我无法将日期(甚至是我的整个表单)插入到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);
}
答案 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