在Datetime字段中插入null

时间:2012-02-06 21:27:33

标签: php mysql

我在MySQL中有一个DATETIME列(Default为NULL)并尝试插入Empty或NULL值。但我收到“不正确的日期时间值:''”错误消息。 如果我插入'NULL',那么我得到“不正确的日期时间值:'NULL'”错误消息。如何在此列中插入空白或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. "');

3 个答案:

答案 0 :(得分:7)

你的问题是你在引号中插入'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);

答案 1 :(得分:0)

将其设置为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. ");

这应该有效。

答案 2 :(得分:0)

您可以插入主键字段值&离开日期字段的任何其他值 自从默认值

以来,mysql将自行插入null