3

我有一个使用 mysqli 查询数据库的 php 项目。此数据库中的某些列可以为空。我的代码看起来像这样:

$query = "...";
$result = $DB->query($query);
$row = $result->fetch_assoc();
$column = $row['mycolumn'];

如果mycolumn为空,则 的值$column似乎是字符串,"NULL"(不是空值,实际上是包含单词“NULL”的字符串)。那么,如果我的列中实际上包含字符串,会发生什么"NULL"?我该如何区分?

谢谢!乔什

编辑:经过仔细检查,该字符串似乎实际上是一个 5 个字符的字符串。前 4 个字符是"NULL",但最后一个字符是 0x0d,即回车。这使它更容易检测,尽管我仍然很好奇是否有一种比仅仅进行字符串比较更简单的方法。

4

3 回答 3

4

使用if条件检查===

if($row['mycolumn'] === null) {
   echo 'Real Null';
} elseif($row['mycolumn'] == '') {
   echo 'Blank';
}
于 2013-05-04T05:07:43.603 回答
3

你看错了方向。与其尝试检测错误的NULL 值,不如找出错误的原因并纠正它。

Mysql 和 mysqli 都不会为空值返回文字字符串“NULL”。

因此,您需要找到自己的代码,在写入或读取时将 NULL 值转换为“NULL\n”字符串。您是使用原始 mysqli 作为 $DB 还是一种抽象类?如果是这样 - 我会说问题存在。

之后,您可以===按照其他答案中的建议通过严格比较轻松读取 NULL 值(尽管我不确定 libmysql 安装)。

于 2013-05-04T06:05:01.980 回答
0

似乎该列的数据类型为字符串。

如果是字符串,

我们可以通过以下方式检查

if($row['mycolumn'] == '' || is_null($row['mycolumn']))
{
    echo "Coulmn is NULL value";
}
else if($row['mycolumn'] == "NULL")
{
    echo "Coulmn is NULL value as string";
}
于 2013-05-04T05:11:24.213 回答