使用PHP检查MySQL NULL值

时间:2011-11-20 23:01:51

标签: php mysql null isnull

这就是我的表格。

id col1 col2  
---------------
1  a     x
2  NULL  y
3  NULL  z
4  NULL  t

col1的默认值为NULL

我想使用col1数据如果col1不为null,否则使用col2数据。

function something($col1,$col2)
{
   if(is_null($col1) == true)
      $var = $col2
   else
      $var = $col1

   return $var;
}

function something2($col1,$col2)
{
   if($col1 === NULL)
      $var = $col2
   else
      $var = $col1

   return $var;
}

这是我的问题。这两个函数都返回$ col2值。但正如您在第一行中看到的那样,col2列不为null。我究竟做错了什么? 更新:寻找使用PHP的解决方案,我需要col1和col2值。

我还想了解,使用NULL值是否是本例的最佳实践?

3 个答案:

答案 0 :(得分:3)

您应该在sql查询中查看使用COALESCE(),只返回要显示的数据。这样可以防止你完全不需要这个函数/逻辑。

SELECT Id, COALESCE(col1, col2)
FROM yourTable

此外,对于PHP,您可以考虑更改if(is_null($col1) == true)

并改为使用if(is_null($col1))。它更小,更简洁,并消除了使用=个符号的问题以及True

的大小写的问题

更新Andreas提出的包含选项的答案:

SELECT Id, col1, col2
   , IFNULL(col1, col2) AS NotNullColumn
FROM yourTable

答案 1 :(得分:3)

我在你的问题中看到了一些问题:

  

我想使用col1数据如果col2不为null,如果它我将使用col2数据。

我假设你的意思是你想使用col2数据,如果col1是null,否则使用col1。在这种情况下,你的PHP有问题。不确定您是否提供了示例代码,但是您没有将任何变量传递给函数,也没有将它们声明为func中的全局变量。

function something($col1, $col2){

  if(is_null($col1) == true)
        $var = $col2;
  else
        $var = $col1;

  return $var;
}

function something2($col1, $col2){

  if($col1 === NULL)
        $var = $col2;
  else
        $var = $col1;

  return $var;
}

echo something('a','x');
echo something2('a','x');

这会给你一个'在这两种情况下

echo something(NULL,'b');
echo something2(NULL,'b');

这会给你''

答案 2 :(得分:1)

签出IFNULL,如果不是null,它会给你col1。否则它会给你col2。

SELECT id, IFNULL(col1, col2) FROM <table>;