PostgreSQL在查询时插入空值

30
在我的php查询代码中,当我向表中插入空值时出现了一些错误。列名为"number1"、"number2"和"number3"的整数可以为空。
如果没有空值,查询就会起作用。
查询语句如下: insert into table(number1,number2,number3) values (1,2,3); 但是当我在PHP的输入表单上留下一个空白值时,
例如我不给"number2"列赋值,查询就会变成这样。 insert into table(number1,number2,number3) values (1,,3); 它会显示错误:ERROR: syntax error at or near "," SQL state: 42601
有人有什么解决办法吗?
这个查询可能是解决方法,但还有其他方法吗? insert into table(number1,number2,number3) values (1,null,3); 因为我有很多变量都是这样的,而且有点懒得编写条件语句来判断变量是否为空,然后将值设为“null”。
1个回答

47

您可以通过输入 "NULL" 来插入 NULL 值:

INSERT INTO table(number1,number2,number3) VALUES (1,NULL,3);

如果您有一个变量,当该变量为空时,您希望插入一个NULL值,您可以使用NULLIF函数将该变量括在单引号中进行准备(这是一种有点“肮脏”的解决方案,因为您必须将该变量视为空字符串,然后将其转换为整数):

INSERT INTO table(number1,number2,number3) VALUES (1,NULLIF('$var','')::integer,3);

有没有其他的解决方案呢?^_^ 因为我有很多类似的变量,我不想在每次返回空值时都花费时间放置条件,然后将该变量赋值为“null”.. 顺便说一句,谢谢你 :) - huddreth
好的,添加了另一个选项。 - Simo Kivistö
谢谢先生... 我将这段代码放在我的程序中,因为数据类型是双精度。INSERT INTO table(number1,number2,number3) VALUES (1,cast(NULLIF('$variable[$i]','') as double precision),3); - huddreth
$变量,注意防止SQL注入! - Frank Heikens
我应该怎么做才能避免注入攻击呢,SIR?^_^ - huddreth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接