首页 > 解决方案 > PHP 如何处理关联结果中的 NULL SQLite 字段?

问题描述

假设我有一个 SQLite 表,其中包含一个名为someValue. 假设我使用 PHP 查询表并返回一行,其中someValue为 NULL。

如果我尝试引用$row['someValue'],会发生什么?PHP 是返回一个null值,还是抛出一个“未定义的索引”?我在文档中找不到这个。如果我使用数字索引而不是关联索引怎么办?如果 PHP 返回 a null,是isset()真还是假?

奖励:这在 MySQL 等其他数据库中的处理方式是否相同?

标签: phpsqlsqlite

解决方案


如果我没记错的话,你会得到一个(致命的?)未定义索引错误。

&你可以通过使用来避免这种情况:

if(!empty($row)&&!empty($row['someValue'])){
  echo $row['someValue']
}

这种方式我们先检查$row,然后再检查,$row['someValue']因为 if 语句中的 php 条件是“贪婪的”,一旦找到结果就返回,而不是解析所有条件。

我更喜欢使用!empty()isset()因为根据我的经验,它更可靠。我会省略你的文章,但这是概念,有时事情不是真的,反之亦然。

根据Lou 的评论,如果我运行,if( isset('') )我会收到以下错误:

Fatal error</b>: Cannot use isset() on the result of an expression (you can use "null !== expression" instead)

...但如果我使用if( !empty('') )它就可以了。


推荐阅读