2013-08-29 55 views
-3

這是我的HTML代碼:保存在MySQL存儲錯誤日期爲 「0000-00-00」

 <p>Leave duration:<input type = "date" name="leave_start"/>to 
          <input type = "date" name="leave_end"/></p> 

下面是我的SQL代碼:

$sql = ("INSERT INTO `leave` ( `Leave_Start` , `Leave_End`) 
        VALUES({$_POST["leave_start"]},{$_POST["leave_end"]}')"); 
+5

在您做任何事之前,請修復代碼中的大量SQL注入漏洞。 – 2013-08-29 14:54:55

+0

嘗試var_dump插入的查詢。你也應該注意逃避數據或改變準備好的語句,atm你打開sql注入 – JimL

+0

我第二@JimL:使用[準備語句](http://www.php.net/manual/en/pdo .prepared-statements.php)! –

回答

3

忽略討厭SQL injection attack孔您代碼中,在數據庫中執行與日期相關的操作時,必須使用MySQL的本地日期字符串格式,例如日期+時間爲yyyy-mm-ddyyyy-mm-dd hh:mm:ss。如果你試圖插入其他東西,MySQL會將其解釋爲一個日期,但不會太費勁。任何無法正確解釋的日期都會顯示爲您的0000-00-00版本。

這意味着

... VALUES ('2013-08-01', '2013-08-31'); 

的工作,但像

... VALUES ('Aug 01/2013', '31st August 2013') 

將徹底失敗。