如何以日期时间格式从PHP表单输入日期和时间信息到MySQL表

时间:2014-07-15 03:05:46

标签: php html mysql datetime

我在这里有点像美元,并寻求一些帮助,帮助解决我在我的某个网站上遇到的格式问题。

我正在尝试以日期时间格式将用户输入的日期和时间信息输入到MYSQL数据库中。但是,当用户选择他们的日期和时间时,将按以下格式完成:2014年1月11日晚上10点

目前我正在尝试从一组从我的数据库填充到同一个MYSQL数据库的下拉菜单中输入信息;

      <tr>
        <td>Time:</td> 
        <td>
            <select name="hour">
                <?php query_hour() ?>
            </select>                   
          :
            <select name="minute">
                <?php query_minute() ?>
            </select>                   
            <select name="ampm">
                <?php query_ampm() ?>
            </select>                   
        </td>
      </tr>
        <tr>
        <td>Date:</td> 
        <td>
            <select name="month">
                <?php query_month() ?>
            </select>
            <select name="day">
                <?php query_day() ?>
            </select>
        ,
            <select name="year">
                <?php query_year() ?>
            </select>
        </td>
        </tr>

我用来将这些信息输入数据库的PHP是:

// scrub inputs
$day = mysql_real_escape_string($_POST['day'], $conn);
$month = mysql_real_escape_string($_POST['month'], $conn);
$year = mysql_real_escape_string($_POST['year'], $conn);
$minute = mysql_real_escape_string($_POST['minute'], $conn);
$hour = mysql_real_escape_string($_POST['hour'], $conn);
$ampm = mysql_real_escape_string($_POST['ampm'], $conn);

// scrub date
$date = date('Y-m-d G:i:s',strtotime($year.' '.$month.' '.$day.' '.$hour.' '.$minute.' '.$ampm));

// prepare query
$sql = "INSERT INTO my_db.events (eventtime)
 VALUES 
 ('$date')";

 // execute query
mysql_query($sql);
echo $sql;

当我提交表单时,它成功但提交通用时间信息而不是用户提交的信息。有没有人可以解决这个问题?我觉得这可能是一个重复的问题,但我花了几个小时来阅读这个论坛以及其他有类似问题并且没有找到决心的人。

先谢谢,到目前为止你们都得到了很大的帮助,我感谢你的支持!

2 个答案:

答案 0 :(得分:2)

尝试'Y-m-d H:i:s'而不是G

  • G是一小时的24小时格式,没有前导零 - &gt; 0到23
  • H是一小时的24小时格式,带有前导零 - &gt; 00至23

了解更多信息:PHP date manual

要了解有关php-mysql datetime的更多信息:convert php date to mysql format

答案 1 :(得分:1)

我解决了自己的问题,但想到我会发布结果,以防其他人遇到类似的问题并需要一些帮助。

问题在于我在擦洗时格式化日期的方式。它不是2014年1月11日下午5:00的格式。

是:

$date = date('Y-m-d G:i:s',strtotime($year.' '.$month.' '.$day.' '.$hour.' '.$minute.' '.$ampm));

应该是:

$date = date('Y-m-d H:i:s',strtotime($month.' '.$day.','.$year.' '.$hour.':'.$minute.' '.$ampm));

我用逗号分隔'.$day.''.$year.',用冒号分隔'.$hour.''.$minute.'后,它开始提供正确的日期。

感谢帮助人员,它让我走上正轨!