通过PHP将日期从表单传递到MySQL

时间:2012-10-23 20:56:50

标签: php mysql datetime

我正在尝试创建一个表单,通过将事件添加到我的MySQL数据库中来将事件添加到我的日历中。

这是表格:

<form action="actions.php?action=addEvent" method="post">
    Titel: <input type="text" name="title"><br/>
    Start tid(YYYY-MM-DD HH:MM): <input type="text" name="startDate"><br/>
    Slut tid(YYYY-MM-DD HH:MM): <input type="text" name="endDate"><br/>
    Beskrivning: <br/>
    <textarea rows="15" cols="10" name="description"></textarea>
    <input type="submit" value="Spara">
</form>

这是PHP脚本:

if($_GET['action'] == 'addEvent'){
    $title = mysql_real_escape_string($_POST['title']);
    $desc = mysql_real_escape_string($_POST['description']);
    $startDate = date('Y-m-d H:i:s', strtotime($_POST['startDate'] . ":00"));
    $endDate = date('Y-m-d H:i:s', strtotime($_POST['endDate'] . ":00"));

    mysql_query("INSERT INTO events VALUES (null, '$title', '$desc', $startDate, $endDate);") or header("Location: ./?p=calendar.php&msg=" . mysql_error());
    header("Location: ./?p=calendar.php&msg=Sparat");
}

MySQL列类型为DATETIME。我应该如何继续将YYYY-MM-DD HH:MM字符串从表单转换为允许mysql_query()工作的类型。目前我得到了?msg = Sparat响应,但没有输入任何行。

3 个答案:

答案 0 :(得分:3)

您需要使用引号

包围dates字段
mysql_query("INSERT INTO events VALUES (null, '$title', '$desc', '$startDate', '$endDate');") or header("Location: ./?p=calendar.php&msg=" . mysql_error());

答案 1 :(得分:0)

您可以调整查询以在日期周围添加单引号。请阅读this

$query_manual = "INSERT INTO tablename (col_name, col_date) VALUES ('DATE: Manual Date', '2008-7-04')";

另外,要求用户以该格式输入日期可能有点麻烦。人们期待这些日期的日期选择。 Here's我经常从jqueryui使用的一个非常简单的。您可以将输入日期格式化为YYYY-MM-DD。如果需要添加时间,可以将jquery datepicker扩展为timepicker

答案 2 :(得分:0)

您收到的日期格式正确。所以你不需要改变它。在mysql_query中使用时,您只需要在日期周围放置单引号。所以你可以:

mysql_query("INSERT INTO events VALUES (null, '$title', '$desc', '".$_POST['startDate']."', '".$_POST['endDate']."');") or header("Location: ./?p=calendar.php&msg=" . mysql_error());