0

我从用户输入中获取日期和时间,然后尝试将给定的日期和时间插入 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.

这给了我正确的日期格式。我已经通过回显它然后尝试手动插入数据库来检查它并且它可以工作。

但是当我尝试插入$i_date通过 PHP 插入 datetime 列时,它不接受它。

我该如何纠正?

4

3 回答 3

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);
于 2013-06-03T19:07:38.833 回答
1

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

$mysql_date = sprintf('%04d-%02d-%02d %02d:%02d:%02d', $year, $month, $day, $hour, $minute, $second);
于 2013-06-03T19:12:46.773 回答
0

日期的正确格式是YYYY-MM-DD HH:II:SS,因此您假设$year保证为四位数,您应该将其更新为

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

在所有 0 填充完成之后。

于 2013-06-03T19:08:05.673 回答