我有一个包含一些Role_codes的表 查找下表
我能够从表中获取所有不同的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的情况下,它返回空白。
答案 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
值。