2013-06-03 134 views
0

我从用户输入中获取日期和时间,然后尝试将给定的日期和时间插入到MySQL中的日期时间列中。这似乎并不奏效。但是,当我插入NOW()它工作正常。插入变量到MySQL datetime

我有变量:$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列时,它不接受它。

我该如何解决这个问题?

+1

你能告诉你正在试图插入到你的数据库这个确切的方法是什么?也许尝试添加一些':'和'.'或类似的东西在这里和那里? – kapa

+0

告诉我们插入表代码.. –

+0

呵呵,别忘了SQL转义值... – kapa

回答

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); 
+0

这工作。我认为这只是我的格式不正确。尽管如此,我上面提到的格式在我手动插入时起作用。 尽管如此,非常感谢。不胜感激。 – user2388643

0

的日期的正确格式为YYYY-MM-DD HH:II:SS,所以你假设$year保证是四位数字,你应该更新它到

$i_date = "$year-$month-$date $hour:$minute:00"; 

完成所有0填充后。

+0

是的,你是对的。谢谢! :) – user2388643

1

你可以简化所有这些重复sprintfs的:

$mysql_date = sprintf('%04d-%02d-%02d %02d:%02d:%02d', $year, $month, $day, $hour, $minute, $second); 
+0

是的,这也是正确的答案。谢谢! – user2388643