2013-06-03 137 views
0

我從用戶輸入中獲取日期和時間,然後嘗試將給定的日期和時間插入到MySQL中的日期時間列中。這似乎並不奏效。但是,當我插入NOW()它工作正常。插入變量到MySQL datetime

我有變量:$year$month$date$hour$minute

這是我在做什麼:

$i_date = "$year"; 
    $month= sprintf("%02s", $month); // These add a leading zero to numbers less than 10 
    $i_date .= "$month"; 
    $date = sprintf("%02s", $date); 
    $i_date .= "$date"; 
    $hour = sprintf("%02s", $hour); 
    $i_date .= "$hour"; 
    $minute = sprintf("%02s", $minute); 
    $i_date .= "$minute"; 
    $i_date .= "00"; // These are for seconds. 

這給了我要的日期格式正確。我已經通過迴應它來檢查它,然後嘗試手動插入到數據庫中並且它可以工作。

但是,當我嘗試通過PHP插入$i_date到datetime列時,它不接受它。

我該如何解決這個問題?

+1

你能告訴你正在試圖插入到你的數據庫這個確切的方法是什麼?也許嘗試添加一些':'和'.'或類似的東西在這裏和那裏? – kapa

+0

告訴我們插入表代碼.. –

+0

呵呵,別忘了SQL轉義值... – kapa

回答

2

我想你錯過了連字符和冒號。格式應該是:

Y-m-d H:i:s // PHP format 

例如,日期時間,現在:

2013-06-03 21:09:00 

就這樣,你的代碼:

$i_date = sprintf('%d-%02d-%02d %02d:%02d:00', $year, $month, $date, $hour, $minute); 
+0

這工作。我認爲這只是我的格式不正確。儘管如此,我上面提到的格式在我手動插入時起作用。 儘管如此,非常感謝。不勝感激。 – user2388643

0

的日期的正確格式爲YYYY-MM-DD HH:II:SS,所以你假設$year保證是四位數字,你應該更新它到

$i_date = "$year-$month-$date $hour:$minute:00"; 

完成所有0填充後。

+0

是的,你是對的。謝謝! :) – user2388643

1

你可以簡化所有這些重複sprintfs的:

$mysql_date = sprintf('%04d-%02d-%02d %02d:%02d:%02d', $year, $month, $day, $hour, $minute, $second); 
+0

是的,這也是正確的答案。謝謝! – user2388643