2012-02-06 81 views
2

我在MySQL中有一個DATETIME列(默認爲NULL),並試圖插入Empty或NULL值。但我得到「不正確的日期時間值:''」錯誤信息。 如果我插入'NULL',那麼我得到「不正確的日期時間值:'NULL'」錯誤消息。如何在此列中插入空白或NULL值?謝謝你的任何建議。在Datetime字段中插入null

這是代碼。

 if (empty($_POST["date_field"])) 
     {  
      $Date1 = 'NULL'; 
     } 
     else 
     { 
      $Date1 = strtotime($_POST["date_field"]); 
      $Date1 = date("Y-m-d H:i:s", $Date1); 
     } 

    INSERT INTO Table1(date_field) VALUES('" .$Date1. "'); 
+0

什麼是DATE_FIELD默認值? – 2012-02-06 21:30:49

+0

粘貼這裏表架構 – 2012-02-06 21:31:16

+0

默認值爲NULL。 – nav100 2012-02-06 21:32:56

回答

6

你這裏的問題是,你將'NULL'包圍在引號,這使得它的字符串。相反,你需要裸露NULL

if (empty($_POST["date_field"])) 
{  
    $Date1 = NULL; 
} 
else 
{ 
    $Date1 = strtotime($_POST["date_field"]); 
    $Date1 = date("Y-m-d H:i:s", $Date1); 
} 

// Surround it in quotes if it isn't NULL. 
if ($Date1 === NULL) { 
    // Make a string NULL with no extra quotes 
    $Date1 = 'NULL'; 
} 
// For non-null values, surround the existing value in quotes... 
else $Date1 = "'$Date1'"; 

// Later, inside your query don't use any additional quotes since you've already quoted it... 
INSERT INTO Table1(date_field) VALUES($Date1); 
+0

謝謝。此代碼有效。 – nav100 2012-02-06 21:46:48

0

它設置爲空不帶引號:

if (empty($_POST["date_field"])) 
    {  
     $Date1 = NULL; 
    } 
    else 
    { 
     $Date1 = strtotime($_POST["date_field"]); 
     $Date1 = date("Y-m-d H:i:s", $Date1); 
    } 

INSERT INTO Table1(date_field) VALUES(" .$Date1. "); 

這應該工作。

0

您可以將主鍵字段值&任何其他值留下您的日期字段 和MySQL將插入它自己的空,因爲它的默認值

相關問題