我将生日列作为我表格中定义的日期。当我插入一个人并留下空白生日字段,我得到0000-00-00我想获得NULL值。当我插入日期作为生日我得到日期,这很好。
我试过了:
Create table (
birthday DATE NULL,
birthday DATE DEFAULT NULL,
birthday DATE NULL DEFAULT NULL,
);
不起作用,请在我的生日字段中获取NULL而不是PIX的一些建议。 我的PHP脚本:
$q = "INSERT INTO users (birthday, other_column, data_registration) VALUES ('$birthday', '$other_column', NOW())
我还没有解决方案,还有什么想法吗?
答案 0 :(得分:3)
$birthday
中的内容是什么?
假设您有$birthday = null
或$birthday = "null"
,您将获得0000-00-00
。这是因为当它传递给您的查询时,它会变得类似(我相信它会将您的'null'
或null
视为一个字符串,因为它周围有单引号):
INSERT INTO users (birthday, other_column, data_registration) VALUES ('null', '$other_column', NOW())
请尝试使用此功能,即删除$birthday
周围的2个单引号:
$q = "INSERT INTO users (birthday, other_column, data_registration) VALUES ($birthday, '$other_column', NOW())
以下是另一种解决方法:
if ($birthday) {
$q = "INSERT INTO b (birthday, other_column, data_registration) VALUES ('$birthday', '$other_column', NOW())";
} else {
$q = "INSERT INTO b (birthday, other_column, data_registration) VALUES (DEFAULT, '$other_column', NOW())";
}
答案 1 :(得分:1)
如果您在创建状态中使用birthday DATE DEFAULT NULL,
并使用
INSERT INTO users (other_column) VALUES ( '$other_column')
你应该获得null´in
生日礼物栏。
答案 2 :(得分:0)
如果要在表中显式插入null,则需要从PHP插入NULL。
如果你想让表保持默认值,那么要么完全使用insert子句中的OMIT,要么使用将应用默认值的文字DEFAULT
。
e.g。
CREATE TABLE Person
(
Name VARCHAR(20),
BirthDate DATE DEFAULT NULL -- Redundant, since a NULLABLE column will default NULL
);
INSERT INTO Person(Name) VALUES('Joe'); -- Default, NULL
INSERT INTO Person(Name, BirthDate) VALUES('Joe', NULL); -- Explicit Null
INSERT INTO Person(Name, BirthDate) VALUES('Joe', DEFAULT); -- Default, NULL
如果您要插入的PHP中的日期为0000-00-00
,那么您需要在代码中应用逻辑,以替换NULL
,DEFAULT
作为列,或省略列(或者我猜使用触发器,但这是一个黑客攻击)