$sql = 'SELECT * FROM `phpbb_profile_fields_data`';
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result)) {
if ($row['pf_kp_em_no_bonethr'] == '1') {
echo " Was 1";
} else if ($row['pf_kp_em_no_bonethr'] == '2') {
echo "Was 2";
} else {
echo "Was Neither 1 or 2";
}
}
$db->sql_freeresult($result);
我很好奇,在我的例子中,我检查字段的值是1还是2但是如何检查它的值为NULL。它会是以下三种中的任何一种:
if ($row['pf_kp_em_no_bonethr'] == '')
if ($row['pf_kp_em_no_bonethr'] == '-1')
if ($row['pf_kp_em_no_bonethr'] == 'NULL')
通常情况下,我会尝试一下,但我不在家,并且在可预见的未来它一直在困扰我。我很确定它不是第二个,但我看到-1用于其他语言的空值。那么有人可以验证我确实如何检查NULL值。
答案 0 :(得分:2)
if ($row['pf_kp_em_no_bonethr'] === NULL)
答案 1 :(得分:1)
这样的事情应该有效。
if (is_null($row['pf_kp_em_no_bonethr'])) {
echo "Is NULL";
}
答案 2 :(得分:1)
MySQL会将PHP返回给PHP作为实际的PHP NULL
。在这种情况下,您需要的是:
// Notice lack of quotes around NULL
// And use === to distinguish type properly between integer 0 and NULL
if ($row['pf_kp_em_no_bonethr'] === NULL)
但是,如果在PHP中需要使用NULL值,那么在查询中检查它会更合适。
$sql = 'SELECT * FROM `phpbb_profile_fields_data` WHERE pf_kp_em_no_bonethr IS NULL';
或者找到所有三个值:
$sql = 'SELECT * FROM `phpbb_profile_fields_data`
WHERE pf_kp_em_no_bonethr IS NULL
OR pf_kp_em_no_bonethr IN (1,2)
';
答案 3 :(得分:0)
我建议对这个非常小心:我见过
<?php
$field=$row['fieldname'];
if ($field===null) {
//Do something
}
?>
间歇性地失败,特别是在Windows上。这就是我喜欢的原因
SELECT
IFNULL(fieldname,'some_safe_value') AS fieldname
...
FROM
...
以及由此产生的琐碎的空检查。
答案 4 :(得分:0)
使用is_null或=== NULL。
if(is_null($row['pf_kp_em_no_bonethr'])){
}
或
if($row['pf_kp_em_no_bonethr'] === NULL){
}