2013-07-16 72 views
0

我有添加了一個新的記錄在我的數據庫的日期欄,它的設置與下面的代碼:插入日期有時插入全0

$dateset = date("Y-m-d"); 
    $q = "INSERT INTO appts (date_set) VALUES ('$dateset')"; 

這是工作約80%的時間,是有任何隨機的原因會將日期添加爲「0000-00-00」?

+2

是'$ dateset' 100%肯定不是空的或無效的?代碼字面上是這樣的,還是'$ dateset'來自別的地方? – deceze

+1

當您嘗試插入無效日期時,您會得到'0000-00-00'。您應該在您的應用程序中尋找在該表中插入記錄的其他位置。你的代碼看起來很好,但如果你想確保你可以使用'... VALUES(NOW())'。 – Vatev

+1

@deceze這是字面上的代碼。這是'$ dateset'唯一一次被使用 – robz228

回答

1

您應該檢查字段'date_set'的類型。

  • 如果類型爲DATE,你必須使用:
 

    $dateset = date("Y-m-d"); 

  • 如果類型是DATETIME,你必須使用:
 

    $dateset = date("Y-m-d H:i:s"); 
    //It is correct, but database push after time 00:00:00 (but it depends on the settings of the database) 
    //$dateset = date("Y-m-d"); 

  • 如果類型爲TIMESTAMP你必須使用:
 

    $dateset = time(); 

嘗試使用SQL:

 

    $q = "INSERT INTO appts (date_set) VALUES (NOW())"; 

+0

TIMESTAMP列可與「Ymd H:i:s」正常工作。 – Vatev

+0

(NOW())就是我要用的 – robz228

0

沒有任何理由,它隨機將添加日期爲 「0000-00-00」?

要麼$dateset填充一些其他的方式或價值得到了更新,以0後來上。

+0

這就是爲什麼我很困惑。在整個代碼的其他地方從未提及過$ dateset。我可能不得不使用NOW – robz228

1

我認爲這將最好的決定使用

$q = "INSERT INTO appts (date_set) VALUES (NOW())";