【问题标题】:I want to ask why my query for null value column result in empty value?我想问为什么我对空值列的查询导致空值?
【发布时间】:2019-09-13 13:04:06
【问题描述】:

我正在尝试获取我的表的数组。但是为什么我的空列值结果是“”或空值?

我的数据库
字段 1、字段 2、字段 3
1,约翰,NULL
2、凯伦,NULL
等等……

$select = "SELECT * FROM password";
$result = $conn->query($select);
while($row = $result->fetch_array())
{
echo $row[2]."<br>";
}

i 除了每个回显的输出为空,例如


等等...

但实际输出是“”=空,

谁能解释一下? 谢谢

【问题讨论】:

  • echo null 打印空字符串的原因相同。
  • 这就是 PHP 的设计方式,当你回显一个 null/false 值时,它会输出为空字符串。
  • 你可以尝试做一个 var_dump 而不是 echo
  • password 表听起来像是糟糕数据库设计的开始。
  • 它不是密码表哈哈@user3783243 我只是假设任何表.. bcs 任何具有空值reslut 空字符串的表。

标签: php mysql


【解决方案1】:

在 PHP 中,当您回显一个空值时,它会打印一个空字符串。 如果要查看“NULL”字符串,则应检查空值:

echo  (is_null($row[2]) ? "NULL" : $row[2])."<br>";
//or in PHP 7:
echo  $row[2] ?? "NULL" ."<br>";

【讨论】:

  • $row[2] ?? “NULL”这是工作!我尝试 (is_null( ... )) 不起作用,此功能是否已弃用?
  • @DavidAdiel 不,is_null 未被弃用。您还可以写 ($row[2] === null) 代替 is_null。
【解决方案2】:

赋值为null的变量或列,表示其为空,即没有值。 NULL 应该表示没有值,而不是被认为是值本身。这是空位,是缺失的信息,是未回答的问题。这不是一个跳跃的零或空集。

https://www.php.net/manual/en/language.types.null.php

$name = null

if($name == 0) returns true

使用严格比较

if ($name === 0) returns false

if(empty($name)) returns true

【讨论】:

    猜你喜欢
    • 2021-11-30
    • 2017-06-12
    • 2021-03-31
    • 1970-01-01
    • 1970-01-01
    • 2013-12-02
    • 2013-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多