将变量插入MySQL datetime

时间:2013-06-03 19:05:23

标签: php mysql datetime insert

我从用户输入获取日期和时间,然后尝试将给定的日期和时间插入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列时,它不会接受它。

我该如何纠正?

3 个答案:

答案 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填充后