php - 错误 - '试图访问 null 类型值的数组偏移量'
问题描述
我不断收到错误消息:在定义我的会话变量的行中,“尝试访问类型为 null 的值的数组偏移量”。我环顾了网络/堆栈和我的代码,但我不知道出了什么问题!这是我第一次从一个文档/代码页中的两个不同表中定义会话变量,所以我怀疑这与此有关。以下是发生错误的 PHP 代码:
<?php
session_start();
include('../includes/dbh.inc.php');
$sql = 'SELECT * FROM shelfitems';
$lqs = 'SELECT * FROM shelfwebsites';
$result = mysqli_query($conn, $sql);
$result2 = mysqli_query($conn, $lqs);
$shelfitems = mysqli_fetch_all($result, MYSQLI_ASSOC);
$shelfwebsites = mysqli_fetch_all($result2, MYSQLI_ASSOC);
$shelfwebsite = mysqli_fetch_assoc($result2);
$shelfitem = mysqli_fetch_assoc($result);
$_SESSION['parent_id'] = $shelfitem['parent_id'];
$_SESSION['folder'] = $shelfwebsite['folder'];
$parent_id = $_SESSION['parent_id'];
$folder = $_SESSION['folder'];
mysqli_close($conn);
解决方案
问题是 mysqli_fetch_assoc 返回 NULL。所以你的变量 $shelfitem 和 $shelfwebsite 是空值
为避免此错误,您可以在获取之前检查是否有任何结果
if (mysqli_num_rows($result) > 0) {
$shelfitem = mysqli_fetch_assoc($result);
$_SESSION['parent_id'] = $shelfitem['parent_id'];
}
https://www.php.net/manual/en/mysqli-result.fetch-assoc.php https://www.php.net/manual/en/mysqli-result.num-rows.php
UPD
结果可能为空的原因
- 你的 sql 查询没有找到任何东西。检查您的表格是否已填满
- 您之前已经使用 mysqli_fetch_all 阅读过 $result
我目前无法检查第二个原因,但您可以尝试评论字符串并检查它是否有效
$shelfitems = mysqli_fetch_all($result, MYSQLI_ASSOC);
$shelfwebsites = mysqli_fetch_all($result2, MYSQLI_ASSOC);
推荐阅读
- angular - 如何知道 Ionic 和 Angular 中每个 http 请求的请求进度
- google-maps-api-3 - 是否可以查看哪些 IP 地址正在使用您的 Google API 密钥?
- java - 重新调整 JList 元素内的文本
- vue.js - 为什么看 momentjs 时 Vuejs 不拾取变化?
- java - CTCol 对象有什么作用,它在 POI 中代表什么?
- python - 如何在 xarray 图中正确显示 datetime64[ns] 时间轴?
- java - JanusGraph 中的遍历序列化错误
- ruby-on-rails - 渲染 json 序列化程序不返回 json
- javascript - 如何在Javascript中使用换行符保存cookie?
- maven - 多模块maven项目:如何跨模块触发所有功能文件?