在if循环中检查null

时间:2018-03-15 16:27:40

标签: php mysql if-statement while-loop null

我的程序遇到了一些问题。 我正在创建一个脚本,该脚本显示数据库中属性表中的所有属性,表中的一行应显示可用或已售出。它应检查puserId是否为空或1或更多

//Execute the Query
$records = mysqli_query($con, $sql);

while($row = mysqli_fetch_array($records)){
 echo "<tr>";
 echo "<td>".$row['propertyId']."</td>";
 echo "<td>".$row['propNum']."</td>";
 echo "<td>".$row['AptNum']."</td>";
 echo "<td>".$row['street']."</td>";
 if (empty(['puserId'])) {
    $status = 'Available';
 }else {
    $status = 'Sold';
 }
 echo "<td>".$status."</td>";

当我使用它时,它显示所有属性都已售出,也是puserId null的所有属性。但它并没有给我任何错误。

有人知道我应该怎么做吗?

提前致谢:)

2 个答案:

答案 0 :(得分:1)

替换:

if (empty(['puserId'])) {

使用:

if (empty($row['puserId'])) {

为了修复丢失的变量$row错误(您的实际代码检查数组['puserId']是否为空,这显然是假的)。如果您的字段为null或数字,则还可以将其写为:

if (is_null($row['puserId'])) {

但我的建议是避免在与标识符相关的表字段中使用空/空值。只需给它们一个默认值0即可使一切变得更容易。此时,您可以将支票写为:

if ($row['puserId'] == 0) {

答案 1 :(得分:0)

除了$row['puserId']错字之外,empty在那里看起来并不实用。它包括一个isset检查,考虑到您知道该列存在,这是无意义的。在使用它们之前,您没有检查是否已设置任何其他列。实际上也没有必要检查那个。只是直接评估它。 null0值将在if条件中评估为false

if ($row['puserId']) {
    $status = 'Sold';
} else {
    $status = 'Available';
}