PHP/MySQL检查null

PHP/MySQL检查null,php,mysql,null,Php,Mysql,Null,我很好奇,在我的示例中,我检查字段的值是1还是2,但是如何检查它的值是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') { ech

我很好奇,在我的示例中,我检查字段的值是1还是2,但是如何检查它的值是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在其他语言中用于空值。那么,有人能验证我是如何检查空值的吗

if ($row['pf_kp_em_no_bonethr'] == '')
if ($row['pf_kp_em_no_bonethr'] == '-1')
if ($row['pf_kp_em_no_bonethr'] == 'NULL')
if ($row['pf_kp_em_no_bonethr'] === NULL)

MySQL将以实际PHP
NULL
的形式向PHP返回NULL值。在这种情况下,您需要的是:

if (is_null($row['pf_kp_em_no_bonethr'])) {
  echo "Is NULL";
}
但是,如果在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)
或查找所有三个值:

$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)
';
以及由此产生的简单空检查。

使用or==null

SELECT
  IFNULL(fieldname,'some_safe_value') AS fieldname
  ...
FROM
...


您是否尝试过使用实际值
null
而不是字符串
'null'
?pherhaps:
is\u null($row['pf\u kp\u em\u no\u bonethr'])
可能与我读过的关于is\u null的内容相同,但无法完全理解如何实现它。谢谢你澄清。我不知道===运算符。它的目的是什么?一些人似乎推荐===NULL的想法,这真的会导致问题吗?如果不是因为糟糕的经验,我也会推荐它。我个人看到DB-NULL字段是作为空字符串给出的,而不是Windows安装中的PHP-NULL。在您提问之前:我对查询进行了三次检查,在安装过程中,针对物理上相同的DB给出了一个PHP-NULL。似乎是客户端版本的属性。
SELECT
  IFNULL(fieldname,'some_safe_value') AS fieldname
  ...
FROM
...
if(is_null($row['pf_kp_em_no_bonethr'])){

}
if($row['pf_kp_em_no_bonethr'] === NULL){

}