1

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

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

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

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

4

4 回答 4

0

尝试

$sql_query.=($_POST["licence"]?"'".$_POST["licence"]."'":NULL).",r1=";
于 2012-09-20T09:46:49.457 回答
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=";

反而

于 2012-09-20T09:54:51.357 回答
0

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

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

于 2012-09-20T13:17:14.600 回答
-1

如果你检查空(0)你会得到假(如手册中所述)

if (isset($licence) && empty($licence)) {
    // it is empty or 0
} elseif(isset($licence)) {
    // it is something 
}
于 2012-09-20T09:54:09.353 回答