2015-09-04 90 views
1

我遇到了问题,通过MySQLi将jQuery UI datepicker日期保存到TIMESTAMP列中。用mysqli保存时间戳

我的变量$_POST['schedule']包含04-09-2015(dd-mm-yy)。我用下面的事先准备好的声明:

$stmt = $mysqli->prepare("INSERT INTO campaigns (schedule) VALUES (?)"); 
$stmt->bind_param("s", strtotime($_POST['schedule'])); 

当我检查数据库,相应时间戳列总是复位为0000-00-00 00:00:00。如果我回显strtotime($_POST['schedule'])我得到一个有效的UNIX时间戳。

另外将bind_param从s更改为i不起作用。

我觉得我正在做一个微不足道的错误,但不明白它是什么。我究竟做错了什么?

+1

您需要注意日期的格式。你正在输入'dd-mm-yyyy'的'04-09-2015',但是你所说的列重置为'yyyy-mm-dd hh-mm-ss' – Henders

+0

我试着手动做strtotime(“ 2015-09-08“)在bind_param()中。我得到同样的东西.. – wiredmark

回答

0

我找到解决这个问题的唯一方法是使用下面的改变格式:

$date = DateTime::createFromFormat('d-m-Y', $_POST['schedule']); 
$date = $date->format('Y-m-d'); 
$stmt = $mysqli->prepare("INSERT INTO campaigns (schedule) VALUES (?)"); 
$stmt->bind_param("s", $date); 
0
$date = date_create($_POST['schedule']); 
    $stmt = $mysqli->prepare("INSERT INTO campaigns (schedule) VALUES (?)"); 
    $stmt->bind_param("s", date_format($date, 'Y-m-d H:i:s')); 

试试这个。更改格式。