SQL字段值0返回空

时间:2014-10-10 17:03:55

标签: php sql

我的SQL数据库中有可变类型的数据,我正在用PHP填充表。

有时我有3列,有时候我有更多,具体取决于数据的类型。 如果我使用:

    $fourthcolumn=$row['fourth'];
    if(empty($fourthcolumn)){
    // DO NOTHING
    }else{
    echo "<td class='fourth'>" . $fourthcolumn. "</td>";
    }

然后它按预期工作,但有一个例外: 有些列是数量。当数量为“0”时,它返回为空,并且不会使td值为“0”。

在我的结构中,如果没有信息,那么单元格是完全空白的,这就是我期望回来的空白

有没有办法退回'0'?我做错了什么?

4 个答案:

答案 0 :(得分:3)

empty(0)在php中评估为true

see manual

所以你可以明确检查

if(empty($fourthcolumn) && $fourthcolumn !==0 && $fourthcolumn !== "0"){
// DO NOTHING
}else{
echo "<td class='fourth'>" . $fourthcolumn. "</td>";
}

答案 1 :(得分:1)

用于empty()的php文档定义了它的工作方式&#34;确定变量是否被认为是空的。如果变量不存在或者其值等于FALSE,则该变量被视为空。&#34;

http://php.net/manual/en/function.empty.php

0将被视为错误。

我建议改用

$fourthcolumn=$row['fourth'];
if(isset($fourthcolumn)){
    echo "<td class='fourth'>" . $fourthcolumn. "</td>";
}else{
    // DO NOTHING
}

isset检查变量是否为空。

http://php.net/manual/en/function.isset.php

答案 2 :(得分:0)

使用此

$fourthcolumn=$row['fourth'] ?: 0;

它描述如下

如果$row['fourth']为空,则为0

答案 3 :(得分:0)

  

bool empty(混合$ var)

     

确定变量是否为空。如果变量不存在或者其值等于FALSE,则该变量被视为空。如果变量不存在,empty()不会生成警告。

在PHP中,0 == false。因此,如果检查的值为0,则为空(正确)返回true。

问题可以解决如下:

if(empty($fourthcolumn) && $fourthcolumn !== 0 && $fourthcolumn !== "0"){
// DO NOTHING
}else{

检查以确保$ fourthcolumn不等于数字0或字符串&#34; 0&#34; (使用严格相等,因此它不会匹配false,或者例如空字符串。)