在MySQL中将值设置为NULL


132

我希望将值设置为NULL如果我提交的表单中的文本框未放入任何内容。我怎样才能做到这一点?我尝试插入,'NULL'但这只是将单词添加NULL到字段中。

我不确定应该为此提供什么代码,我只是在编写UPDATE查询。


12
你必须插入单词null 而不加引号..
迈克·克里斯滕森

Answers:


268

不要NULL在更新语句中加引号。这应该工作:

UPDATE table SET field = NULL WHERE something = something

同样在这里:Static analysis: 1 errors were found during analysis. Unrecognized keyword. (near "NULL" at position 35) SQL query: UPDATE programs SET flash = NULL。-更新:是以下WHERE情况导致了问题!
凯诺克

16

您可能引用了“ NULL”。NULL是MySQL中的保留字,可以不加引号插入/更新:

INSERT INTO user (name, something_optional) VALUES ("Joe", NULL);
UPDATE user SET something_optional = NULL;


6
if (($_POST['nullfield'] == 'NULL') || ($_POST['nullfield'] == '')) {
   $val = 'NULL';
} else {
   $val = "'" . mysql_real_escape_string($_POST['nullfield']) . "'";
}

$sql = "INSERT INTO .... VALUES ($val)";

如果您'NULL'输入查询,那么您只是插入一个4个字符的字符串。不带引号的NULL是实际的空值。



5

您应该插入null,而不是的字符串'NULL'



2

这里给出的答案很好,但我仍在努力在mysql表中发布NULL而不是零。

最后我注意到问题出在我正在使用的插入查询中

   $quantity= "NULL";
   $itemname = "TEST";

到目前为止,一切都很好。

我的插入查询不正确。

   mysql_query("INSERT INTO products(quantity,itemname) 
   VALUES ('$quantity','$itemname')");

我更正查询以阅读。

   mysql_query("INSERT INTO products(quantity,itemname) 
   VALUES ('".$quantity."','$itemname')");

因此,$ quantity在主字符串之外。我的SQL表现在接受记录为空数量而不是0


我还建议放弃已弃用的mysql_函数,并切换到mysqli或我的首选项PDO。
muttley91

2

您遇到的问题很可能是因为mysql区分大写字母的null和小写字母的null。

因此,如果您使用带有null的update语句,则它将不起作用。如果将其设置为NULL,它将正常工作。

谢谢。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.