【问题标题】:How to check if database values are null?如何检查数据库值是否为空?
【发布时间】:2015-05-07 15:45:52
【问题描述】:

我是 PHP/SQL 新手,很困惑。

在我的 SQL 数据库中,我有以下用户值:

在我的 PHP 脚本中,回显这些值会给我 0。

查询:

$query = "SELECT * FROM user WHERE email = '{$email}'";
$result = mysqli_query($con, $query);
$row = mysqli_fetch_array($result);

我在数据库中指定了链接到上述用户的电子邮件。结果,我得到了所需的行(用户 ID 13 和这些空值)。尽管如此,代码还是进入了这个 if 语句:

if (!empty($row['first_name']) && !empty($row['last_name']) && 
!empty($row['age']) && !empty($row['picture_path'])) {
    echo "inside";
}

呼应这些值本身给了我 0 而不是 null。为什么?以及如何正确检查空/null?

感谢负载。

【问题讨论】:

  • 你在用什么DBMS
  • 如果想签入php可以使用is_null(),否则想使用mysql可以使用ifnull, COALESCE
  • 不 !empty 检查空值和空值吗?
  • 我觉得有误会。我在我的数据库中正确地检索了这个确切的行。问题出在我评估值并得到 0 而不是 null 时。我刚刚编辑了我的问题以消除任何混淆。
  • $var = is_null($row['name']) ? 'Null' : $row['name']; echo $var;

标签: php sql database variables null


【解决方案1】:

PHP empty('0') 返回true;测试空使用is_null($var)

不直观,但就是这样。

【讨论】:

    【解决方案2】:

    如果某个值为空,您可以使用COALESCE() 函数分配某个字符串。见下文:

    "SELECT 
           COALESCE(user_id,'null')user_id,
           COALESCE(first_name,'null')first_name,
           COALESCE(middle_name,'null')middle_name,
           COALESCE(last_name,'null')last_name,
           COALESCE(rs_status,'null')rs_status,
           COALESCE(age,'null')age,
           COALESCE(town,'null')town,
           COALESCE(phone,'null')phone,
           COALESCE(picture_path,'null')picture_path
     FROM user 
    WHERE email = '{$email}'"
    

    【讨论】:

    • 我明白了,所以我会针对分配的字符串进行测试。这很聪明,但没有更简单的方法吗?
    • 这是我所知道的更简单的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-10
    • 1970-01-01
    相关资源
    最近更新 更多