无法在PHP中查看MYsql中的NULL值

时间:2017-05-03 05:10:24

标签: php mysql

我有一个包含一些Role_codes的表 查找下表

enter image description here

我能够从表中获取所有不同的role_code,但在NULL的情况下,结果为空。

以下代码:

    <?php

    if ($role_code === 'BOB')
        {
        $sql = "SELECT distinct role_code FROM `create_user`";
        $result = $pdoConn->query($sql);
        if ($result !== false)
            {
            echo "<div class='w3-container w3-responsive w3-round w3-padding-
            large' style='width:95%;margin:10px;'>";
        echo " <h4 class='w3-text-indigo'>Admin please select role to view 
           record.</h4> 
<select id='view_record' name='view_record' class='w3-input w3-light-grey' style='width:90%'><option value='select Role'>Select Role</option>";
            while ($row = $result->fetch(PDO::FETCH_ASSOC))
                {
                $role_id = $row["role_code"];
                echo "<option  value=$role_id>" . $row["role_code"] . "</option>";
                }

            echo "</select></div>";
            }
        }

上面的代码返回所有唯一值,但在Null的情况下,它返回空白。

3 个答案:

答案 0 :(得分:1)

在你的代码

中使用它
if(is_null($result['role_code']))
{
   echo "<option value='0'>Null</option>";
}else{
   echo "<option value='1'>Result...</option>";
}


How to check if mysql returns null/empty
PHP Check for NULL

答案 1 :(得分:1)

HTML内容中没有null的概念。当你在PHP中echo null时,你得到一个空字符串。我建议将你的while语句更改为:

while ($row = $result->fetch(PDO::FETCH_ASSOC))
{
  $role_id = $row["role_id"];
  echo "<option value='" . (is_null($role_id) ? "null" . $role_id) . "'>" . $row["role_id"] . "</option>";
}

...然后将option的值设置为字符串"null"。然后,在表单提交后在服务器端收回数据时,您可以像这样转换回null

$role_id = ($_POST['view_record'] === 'null' ? null : (int)$_POST['view_record']);

这样做意味着您不仅要保留null值来回,还要满足role_id = 0,并且正在从字符串转换客户端数据(这是所有HTML发布的变量都是正确的数据库类型。

答案 2 :(得分:0)

我认为您需要检查NULL值:

if($variable === NULL) {...}

不是

if($variable === 'NULL') {...}

因为如果像其他字符串值NULL一样检查NULL值,NULL不是字符串,则条件不会检查NULL值。