2013-05-29 45 views
0

我發送的日期按以下格式的服務器:「01-01-1970」發佈日期問題同MySQL的

我這樣做是爲了獲取日期和格式化:

$datetime = date('d-m-Y H:i:s', strtotime($_POST["date"] . "19:31:30")); 

然後我用PDO將其發送到數據庫通過簡單地做:

$stmt = $db->prepare("INSERT INTO events 
      (runnerID,eventDateTime,duration, 
      cost,address,city,country, 
      postcode,description) VALUES 
(?,?,?,?,?,?,?,?,?); 
    "); 
$stmt->execute(array($userID,$datetime,$_POST["duration"],$_POST["eventPrice"], 
    $_POST["addressLine1"],$_POST["addressCity"],$_POST["addressCountry"],$_POST["addressPostCode"],$_POST["eventDesc"])); 

但是當我到數據庫並保存爲:「0000-00-00 00:00:00」的列的類型是「日期時間「

有誰知道爲什麼會發生這種情況?

+0

你能告訴我們插入代碼嗎? – cheesemacfly

+0

更新對不起,希望它有幫助 – LmC

+0

你試過'$ datetime'嗎? – Jim

回答

3

應該是日期( 「YMD H:我:■」 .....

$datetime = date('Y-m-d H:i:s', strtotime($_POST["date"] . " 19:31:30")); 

...你的時間

+0

,但正如我所說即時獲取日期在「」01-01-1970「 – LmC

+0

如果您的$ _POST ['date']是在格式dmY與轉換無關,它可能導致strtotime瘋狂,也許你應該將它改爲Ymd – steven

+0

'如果分隔符是破折號( - )或點(。),那麼歐洲的dmy格式是假設.'所以我猜你的答案是有道理的 – cheesemacfly

1

你所需要的日期時間字段前有一個缺失的空間以單引號您的價值'$ datetime'這將填充您的字段我已經犯了幾次相同的錯誤

+0

所有零你的意思是單引號('),而不是反向提示(')? –

+0

是的,感謝收到喬治。 – Jim

0

嘗試回顯$ datetime varible以查看您在運行查詢之前獲得的內容

你也發佈未經驗證的後期值到數據庫,這讓你很容易受到SQL注入攻擊。在運行查詢之前驗證每個帖子值。

filter input php documentation

+0

當回顯我得到「29-10-1992 19:31:30」 – LmC

+0

,這是一個mysql日期時間字段的錯誤格式 – steven

+0

2038-01-19 03: 14:07(ne編輯爲這種格式) – user466764