2016-03-02 60 views
0

存儲我有下面的代碼片段:日期()呼應是正確的日期和時間格式,但不會正確數據庫

date_default_timezone_set('UTC'); 
if (!isset($_POST['secret']) && $post_msg != "") { // checkbox unchecked processing... 
    // Checkbox is selected 
    $date_of_msg= date('l jS F Y h:i'); 
    $msg_sent_by = $username; 
    $insert_query = "INSERT INTO user_thoughts VALUES ('','$post_msg','$date_of_msg','','' ,'$attach_name','$msg_sent_by','yes')"; 
    $run_query = mysqli_query($connect, $insert_query) or die(mysqli_error()); 
} 

當我回聲$date_of_msg,日期和時間將打印出來如預期的那樣,但是當上面的INSERT查詢運行時,數據庫中的字段將存儲0000-00-00 00:00:00

將存儲$date_of_msg的字段稱爲post_details,其類型爲datetime。我知道有一個叫做date_to_str的函數,看起來和它有關的問題,比如this之一。但在這個問題的答案是轉換手動輸入的日期,而我想獲得用戶發佈帖子的時間。我認爲解決方案是在插入$date_of_msg變量時使用date_to_str函數?但我無法理解它是如何工作的?

+3

'升JS FY H:i'是不是mysql的日期時間格式。爲什麼不使用'now()'? – chris85

+3

MySQL期望日期格式爲'YYYY-MM-DD hh:mm:ss' – Barmar

+0

目標列的格式是什麼?如果是DATE格式,則需要按照上述註釋詳細說明更改輸入佈局。另外你的'MySQLi_error()'需要包含'$ connect'的值。 – Martin

回答

1

date('l jS F Y h:i'); 

正在發送的結果,如:

週三2016年3月2日10:00

所以你得到的是價值0000-00-00 00:00:00的日期時間

不匹配

更改爲:

date('Y-m-d h:i:s'); 

或將日期格式化爲您需要使用此文檔的某些內容。 http://php.net/manual/en/function.date.php

0

這可能是因爲您的Web服務器(apache im guessing)配置與您的mysql配置不同。

所以這就是爲什麼你遇到一些混淆。

有幾種方法可以解決這個問題,但它需要你選擇一種格式並運行它。

  1. 將記錄插入到mysql時,告訴它你想使用什麼格式。 ('DATETIME:Manual DateTime','1776-7-4 04:13:54')「;這是一個非常簡單的方法。

  2. 研究mysql和apache日期時間配置並修復它們,使它們具有相同的確切日期時間格式。

0

在MySQL日期時間字段,可以僅插入格式的日期時間Y:m:d H:i:s

請使用datetime格式相同

$date_of_msg = date('Y:m:d H:i:s');