2015-09-04 68 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')); 

試試這個。更改格式。