我有一个很好的时间来解决这个问题 - 这似乎是一个有据可查的问题,但没有一个解决方案足以完全解决我的问题。
基本上我已经为我们的网站建立了一个数据库来保存即将发生的事件;有时这些事件会显示不止一个,因此我们可以在字段中输入这些日期(如果有的话)。大多数时候,只有一个日期可以输入,所以我们的额外日期字段(date2、date 3 等)是空白的。如果它们是空白的,我希望它们作为NULL保存到 mysql 数据库中。
我将值扔到 mySQL 的示例如下所示:
if (empty($_POST['date2']))
{$date2 = NULL;
}
else
{$date2 = mysql_real_escape_string(date("Y-m-d",strtotime($_POST['date2'])));
}
哪个正在做它应该做的事情。当我们尝试如下更新变量时,问题就来了:
mysql_query("UPDATE events
SET date2='".mysql_real_escape_string($date2))."',
mySQL 不知道这个值是什么(显然,因为你不能转义字符串或格式化 NULL 的日期),所以它将值保存为 0000-00-00 (或 1969-12-31 ......取决于我试图解决这个问题)。我想不通的是如何在不使用 ''s 的情况下输入 date2 的值。
我尝试将其更改为date2 = $date2,但代码不会执行并抛出错误。 date2='$date2',执行 - 但它再次没有正确保存 NULL(我认为是因为它保存的是 'NULL' 而不是 NULL?)。
有什么建议吗?