0

我正在尝试通过将事件添加到我的 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 响应但没有行输入到数据库中。

4

3 回答 3

3

您需要dates用引号将字段括起来,

mysql_query("INSERT INTO events VALUES (null, '$title', '$desc', '$startDate', '$endDate');") or header("Location: ./?p=calendar.php&msg=" . mysql_error());
于 2012-10-23T21:06:24.157 回答
0

您可以调整查询以在日期前后加上单引号。请阅读

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

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

于 2012-10-23T21:06:16.953 回答
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());
于 2012-10-23T21:07:29.990 回答