NULL 与 “NULL”

在PHP中使用变量动态插入可能某些项可能为空(NULL)的方法

向往数据库中插入数据,其中有些项可能为空(NULL),直接的查询语句如下:

1
2
3
-- content text
-- parent int
INSERT INTO msg(content, parent) VALUES("Test message", NULL);

不过,需要考虑的是,上面的parent不一定为空,而是根据情况判断。当需要为空时,插入到数据库中的是NULL。所以需要采用变量的方式而不是硬coding,如:

1
$query = "insert into msg(content, parent) values('$content', $parent)";

在这里折腾了好久,因为一直通不过,后来才发现在判断该插入空的时候变量的PHP代码不正确。

1
2
3
4
# wrong
$parent = NULL;
# right
$parent = "NULL";

PHP中的NULL代表的是无值(no value),而实际上数据库中需要的是“NULL”,故应赋以字符串值而不是无值。