php - PHP 如何处理关联结果中的 NULL SQLite 字段?
问题描述
假设我有一个 SQLite 表,其中包含一个名为someValue
. 假设我使用 PHP 查询表并返回一行,其中someValue
为 NULL。
如果我尝试引用$row['someValue']
,会发生什么?PHP 是返回一个null
值,还是抛出一个“未定义的索引”?我在文档中找不到这个。如果我使用数字索引而不是关联索引怎么办?如果 PHP 返回 a null
,是isset()
真还是假?
奖励:这在 MySQL 等其他数据库中的处理方式是否相同?
解决方案
如果我没记错的话,你会得到一个(致命的?)未定义索引错误。
&你可以通过使用来避免这种情况:
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('') )
它就可以了。
推荐阅读
- javascript - flowtype 覆盖率报告没有选择我已经定义的类型
- c# - 如何在 C# 中使用 ServerConnection SMO 获取 SQL 错误消息
- javascript - 在 javascript/html 中显示 FPS
- javascript - 错误:加载资源失败:服务器响应状态为 413(请求实体太大)
- cmake - 如何找到通过 FetchContent 下载的包的目录?
- python - 子类化 Tk 时,Python PIL PhotoImage 图像“pyimage1”不存在
- mapbox - 地图不会无头渲染
- windows - 基于 TCPIP 的 Xamarin 仿真
- javascript - 使用 bootstrap 4.5 卡时不需要的额外右填充
- javascript - 如何在上传大小为 1GB 的大文件时处理“存储/重试限制超出”firebase 存储网络