将datetime-local插入MySql

时间:2016-06-08 04:17:29

标签: php mysql datetime

我正在创建一个简单的表单来将事件数据插入我的数据库。

形式:

<form enctype="multipart/form-data" action="upload.php" method="POST">

Event Date/Time: <input type="datetime-local" name="event_date">

Event Title: <input type="text" name="event_title">

Event Details:
<textarea id="tiny_mce" name="description" rows="8"></textarea>

    <input type="submit" value="Upload">

</form>

操作:upload.php

// new data
$event_date     = $_POST['event_date'];
$event_title    = $_POST['event_title'];
$description    = $_POST['description'];

// query
$addevent = DB::getInstance()->insert('events', array(
    'event_date ' => $event_date,
    'event_title' => $event_title,
    'description' => $description,

));
echo "<pre>".
var_dump($addevent);
echo "</pre>";

如果我对上传脚本中的每个值执行var_dump,我会得到正确返回的值。

当我执行var_dump($addevent);时,它会以 bool(false)返回,并且没有任何内容添加到我的表格中。

如果我删除<input type="datetime-local" name="event_date">&amp; $event_date = $_POST['event_date'];一切正常。

所以我缩小了问题必须在日期时间。

我的DATETIME如何在我的数据库中正确设置。

现在我有event_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP

显然这不起作用......有什么建议应该是什么?

4 个答案:

答案 0 :(得分:2)

假设为什么删除event_date工作将是由于您的DB类在转换或格式中没有发现错误,并允许保存继续而不是发送格式错误的数据。

DATETIME需要一个类似date("Y-m-d H:i:s")

的字符串

如果您无法验证格式是否已进入您的脚本,您可以允许PHP为您解析和格式化:date("Y-m-d H:i:s",strtotime($event_date))

答案 1 :(得分:1)

可能这不是你想要的答案。但是我想建议你如何在upload.php中调试数据POST。 通过这个你的陈述:

  

当我做var_dump($ addevent)时;它回归为bool(假)

您应该$_POST['event_date'];仅调试die($event_date);。因此,通过仅调试这样的event_date,您可以知道$_POST['event_date'];

的值是多少
// new data
$event_date     = $_POST['event_date'];
die($event_date); 
//this will show you the value of $_POST['event_date'];
$event_title    = $_POST['event_title'];
$description    = $_POST['description'];

// query
$addevent = DB::getInstance()->insert('events', array(
    'event_date ' => $event_date,
    'event_title' => $event_title,
    'description' => $description,

));
echo "<pre>".
var_dump($addevent);
echo "</pre>";

答案 2 :(得分:1)

问题在于:

// query
$addevent = DB::getInstance()->insert('events', array(
    'event_date ' => $event_date,
    'event_title' => $event_title,
    'description' => $description,

'event_date '之间有一个空格......应该没有这样的空格'event_date' ...骨头错误。 我最终将我的datetime-local插入到我的表中,并带有这样的时间戳选项,这样我就可以将它输出到我想要的位置,并根据我的喜好用css设置日期和时间的样式。这是我的表格的样子: enter image description here

感谢所有帮助,我仍然学到了一些有用的信息。

答案 3 :(得分:0)

我的查看方式:您是否要使用服务器CURRENT_TIMESTAMP来让客户端点击“提交”。还是要让客户自由输入时间和日期。您正在尝试在代码中同时做这两项。

我猜您希望在MySQL数据库上设置CURRENT_TIMESTAMP。删除:

在SQL代码中,将$ event_date VALUE更改为(DEFAULT)。