2016-06-08 135 views
1

我正在创建一个简单的表单以将事件数据插入到我的数据库中。将datetime-local插入到MySql中

表:

<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"> & $event_date = $_POST['event_date'];一切工作正常。

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

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

现在我有event_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP

显然,这是不工作...任何它应该是什么样的建议?

+0

您在这里使用哪个数据库框架? – tadman

+0

@tadman数据库框架= MySQL – echo

+0

你能分享一个你在输入字段中输入的示例值吗? – arunrc

回答

1

的问题是在这里:

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

有一个在'event_date '之间的空间......应该是这样的'event_date' ......笨蛋错误没有空间。 我结束了我的日期时间本地插入到我的表中与这样的时间戳选项,所以我可以输出它在我想要的位置和样式的日期和时间,我喜欢用CSS。这里是我的桌子看起来像: enter image description here

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

1

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

When I do a var_dump($addevent); it comes back as bool(false)

你应该只调试$_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>"; 
+0

当我执行var_dump时,所有的值都会返回true。 event_date是2016-06-18T08:00 尽管由于event_date,所有数据都不会插入到我的数据库中。这就是为什么我认为我的数据库表结构中有些东西搞砸了。我正在使用类型datetime ... – echo

+0

Oke sory为此,请在插入数据之前尝试使用strtotime($ event_date)。 –

+0

我不认为strtotime($ event_date)会完成这项工作 - 但必须完成iso8601字符串的转换 –

2

假设为什么删除event_date作品将是价值因您的DB类铸造或格式发现任何错误,并允许保存到继续反对发送畸形数据。

DATETIME希望像date("Y-m-d H:i:s")

字符串如果您无法验证该格式即将在你的脚本,可以让PHP解析并格式化为你喜欢:date("Y-m-d H:i:s",strtotime($event_date))