如何将空表单字段保存为null?

时间:2012-09-20 09:45:52

标签: php

我有一个将POST数据发送到php文件的html表单。 在php我正在查询mysql数据库。在数据库中,我有int列,接受null。

问题是当web表单字段为空时,我想将null保存到数据库。 我在构建查询之前尝试进行检查

if (empty($licence))
        $sql_query.="null,r1=";
    else $sql_query.="'".$_POST["licence"]."',r1=";

它正在运作。但是如果用户在表单字段中写入0,则在数据库中将保存为null,这是错误的。如果用户输入0,我想保存0,但如果该字段为空,我想保存null。怎么解决这个? 问题是如果字段为空,则0将作为发布数据发送...

4 个答案:

答案 0 :(得分:0)

尝试

$sql_query.=($_POST["licence"]?"'".$_POST["licence"]."'":NULL).",r1=";

答案 1 :(得分:0)

empty()函数(PHP手册)

如果var存在并且具有非空的非零值,则返回FALSE。否则返回TRUE。

以下内容被认为是空的:

"" (an empty string)
0 (0 as an integer)
0.0 (0 as a float)
"0" (0 as a string)
NULL
FALSE
array() (an empty array)
$var; (a variable declared, but without a value)

在您的情况下,请使用:

if (!strlen($licence))
    $sql_query.="null,r1=";
else $sql_query.="'".$_POST["licence"]."',r1=";

代替

答案 2 :(得分:0)

我认为您可能在数据库表中将许可证字段默认值设置为0。因此,当该字段为空时,将记录保存到数据库时需要0。

将默认值设为NULL。它将清除问题。

答案 3 :(得分:-1)

如果检查为空(0),则会出现错误(如手册中所述)

if (isset($licence) && empty($licence)) {
    // it is empty or 0
} elseif(isset($licence)) {
    // it is something 
}