Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL时间戳插入正常,但有时会失败_Php_Mysql_Twitter Bootstrap_Datetime_Insert - Fatal编程技术网

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的顺序。。。。非常感谢。