Php MySQL时间戳插入正常,但有时会失败
所以我有一个Php MySQL时间戳插入正常,但有时会失败,php,mysql,twitter-bootstrap,datetime,insert,Php,Mysql,Twitter Bootstrap,Datetime,Insert,所以我有一个bootstrap3表单,里面有一个clockpicker和一个datepicker插件。我通过PHP获取所有数据,并尝试插入到MySQL(目前在XAMPP中)。有时可以插入,但有时数据库中的一个或两个Timestamp字段保留在0000 由于我显示的日期类似于2016年9月17日,但我尝试在MySQL中保存日期,类似于2016年9月17日,我必须将时钟选择器中的文本连接到日期选择器中的文本,因此我执行以下操作: $startDate = $_POST['shiftStart
bootstrap3
表单,里面有一个clockpicker
和一个datepicker
插件。我通过PHP获取所有数据,并尝试插入到MySQL
(目前在XAMPP中)。有时可以插入,但有时数据库中的一个或两个Timestamp
字段保留在0000
由于我显示的日期类似于2016年9月17日,但我尝试在MySQL中保存日期,类似于2016年9月17日,我必须将时钟选择器中的文本连接到日期选择器中的文本,因此我执行以下操作:
$startDate = $_POST['shiftStartDate'] . " " . $_POST['shiftStartTime'];
$startDateFormat = str_replace('/', '-', $startDate);
$date1 = date_create($startDateFormat);
$dateTime1 = date_format($date1, 'Y-d-m H:i:s');
$endDate = $_POST['shiftEndDate'] . " " . $_POST['shiftEndTime'];
$endDateFormat = str_replace('/', '-', $endDate);
$date2 = date_create($endDateFormat);
$dateTime2 = date_format($date2, 'Y-d-m H:i:s');
有什么想法吗
解决方案:
格式化时,要符合MySQL的Y-m-d要求,而不是Y-d-m要求:
$dateTime2 = date_format($date2, 'Y-m-d H:i:s');
当您将日期格式保存到DATETIME或TIMESTAMP列数据类型中的数据库时,MYSQL希望它是YYYY-MM-DD HH:MM:SS 您正在尝试将其保存为YYYY-DD-MM。这只有在DD小于12时才有效,因此这可能解释了为什么它有时有效,有时无效 所以,按照MYSQL的期望正确地设置日期格式,一切都会好起来的
我还认为,当你读回保存到数据库中的日期时,你会得到一些奇怪的结果。你为什么要将其保存为
2016-17-19
,而不是后者呢?@Caelagrgurovic你选择了一个有趣的日期??最有可能是哪个日历,因为它是有效的MySQL数据格式(YYYY-MM-DD)。无论如何,当格式不是有效的日期格式时会发生这种情况,所以MySQL不知道如何处理它。请尝试在插入之前回显$dateTime1
和$dateTime2
,并确保它始终采用您期望的格式。此外-没有像2016-17-09这样的日期(日历中只有12个月:)@RiggsFolly ahaha*09@CaelanGrgurovic呵呵,就是那个是的,就是那个虫子。。。我知道格式需要匹配,这就是为什么我首先要进行格式设置,但由于某些原因,我感到困惑,改变了D和m的顺序。。。。非常感谢。