我从用户输入获取日期和时间,然后尝试将给定的日期和时间插入MySQL中的datetime列。这似乎没有用。但是,当我插入NOW()
时,它可以正常工作。
我有变量:$year
,$month
,$date
,$hour
和$minute
。
这就是我在做的事情:
$i_date = "$year";
$month= sprintf("%02s", $month); // These add a leading zero to numbers less than 10
$i_date .= "$month";
$date = sprintf("%02s", $date);
$i_date .= "$date";
$hour = sprintf("%02s", $hour);
$i_date .= "$hour";
$minute = sprintf("%02s", $minute);
$i_date .= "$minute";
$i_date .= "00"; // These are for seconds.
这给了我正确的日期格式。我通过回显它然后尝试手动插入数据库来检查它,它的工作原理。
但是当我尝试通过PHP将$i_date
插入到datetime列时,它不会接受它。
我该如何纠正?
答案 0 :(得分:2)
我认为你错过了连字符和冒号。格式应为:
Y-m-d H:i:s // PHP format
例如,现在的日期时间:
2013-06-03 21:09:00
因此,使用您的代码:
$i_date = sprintf('%d-%02d-%02d %02d:%02d:00', $year, $month, $date, $hour, $minute);
答案 1 :(得分:1)
您可以简化所有重复的sprintfs:
$mysql_date = sprintf('%04d-%02d-%02d %02d:%02d:%02d', $year, $month, $day, $hour, $minute, $second);
答案 2 :(得分:0)
日期的正确格式为YYYY-MM-DD HH:II:SS
,因此您假设$year
保证为四位数,您应该将其更新为
$i_date = "$year-$month-$date $hour:$minute:00";
完成所有0填充后。