2012-02-06 82 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将插入它自己的空,因为它的默认值

相关问题