PHP / MySQL检查null

时间:2012-02-28 21:58:36

标签: php mysql null

$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值。

5 个答案:

答案 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){

}