【问题标题】:Insert null into Datetime field将空值插入日期时间字段
【发布时间】:2012-02-28 08:45:14
【问题描述】:

我在 MySQL 中有一个 DATETIME 列(默认为 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. "');

【问题讨论】:

标签: php mysql


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    将其设置为不带引号的 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】:

      您可以插入主键字段值和任何其他值离开您的日期字段 并且mysql将自其默认值以来自行插入null

      【讨论】:

        猜你喜欢
        • 2012-05-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-13
        • 1970-01-01
        • 1970-01-01
        • 2012-01-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多