【发布时间】:2013-07-20 23:59:57
【问题描述】:
我在将空值插入 MySQL 表中的日期字段时遇到问题。
这是插入查询:
$query = 'INSERT INTO table (column_s1, column_s2, column_d1, column_d2)
VALUES ("'.$string1.'", "'.$string2.'", '.$date1.', '.$date2.')';
s1 和 s2 列采用字符串值,d1 和 d2 采用日期。当我只使用字符串字段运行此查询时,没有问题。
日期值可以设置或为空,所以我没有在查询中包含引号,而是在前面将它们添加到变量中。这是我用来设置日期值的 php 代码:
if (empty($date1)){
$date1 = NULL;
}
else{
$date1part = explode("/",$date1);
$date1 = '"'.$date1part[2].'/'.$date1part[1].'/'.$date1part[0].'"';
}
当日期值全部设置好后,记录就被正确插入了。但是,当任一日期为空时,不会插入任何内容。
为什么我不能像这样在 MySQL 中插入空值?
【问题讨论】:
-
您收到的错误信息是什么?数据库是否已设置为允许空值?没有限制?
-
用例.. case when $date1 != null then $date1 else null end
-
我不能让它产生任何错误信息?据我所知,它似乎认为它被插入了。有什么方法可以建议调试吗?是的,数据库接受空值。当我使用 SQL 命令空间时,它允许我在其中插入 NULL 值,似乎只有当它来自我的 php 时。
-
@deceze:感谢您链接到这个问题。我已经尝试过该解决方案(我认为),但显然情况略有不同,因为它现在似乎已经解决了我的问题。问题是它采用 php null 值而不是将 null 输入到 SQL 中。非常感谢。
标签: php mysql date null sql-insert