php - 如何修复尝试访问空类型值的数组偏移量错误
问题描述
我正在使用 PHP 创建一个时间表视图,其中我根据日期和时间获取讲座数据。
这是我所做的代码
$monday_lectures = "SELECT * from lectures where lecture_time = '11am to 1pm' and lecture_day = 'firday'";
$result_11to1 = mysqli_query($con, $monday_lectures);
$m11to1 = mysqli_fetch_array($result_11to1);
if ($m11to1["lecture_day"] == !'') {
echo "<td>".$m11to1["lecture_name"]."</td>";
} else {
echo "<td> no class</td>";
}
但是对于上面的代码,我遇到了以下错误:
警告:尝试访问第 45 行 C:\xampp\htdocs\nexgschool\admin\notify\add_time_table.php 中 null 类型值的数组偏移量
解决方案
当您在从数据库获取数据后收到此错误时,这意味着数据库没有找到任何匹配的行。null
当没有匹配的记录或结果集已用尽时,大多数数据库获取函数返回一个空数组或一个空数组。
要解决问题,您需要检查值的真实性或您要访问的密钥是否存在。
$monday_lectures = "SELECT * from lectures where lecture_time = '11am to 1pm' and lecture_day = 'firday'";
$result_11to1 = mysqli_query($con, $monday_lectures);
$m11to1 = mysqli_fetch_array($result_11to1);
if ($m11to1 && $m11to1["lecture_day"] == !'') {
echo "<td>".$m11to1["lecture_name"]."</td>";
} else {
echo "<td> no class</td>";
}
如果您所追求的是结果数组中的单个值,那么您可以指定默认值以防结果不存在。
$monday_lectures = "SELECT * from lectures where lecture_time = '11am to 1pm' and lecture_day = 'firday'";
$result_11to1 = mysqli_query($con, $monday_lectures);
$m11to1 = mysqli_fetch_array($result_11to1);
$lecture = $m11to1["lecture_day"] ?? null;
这同样适用于 PDO。
$monday_lectures = $pdo->prepare("SELECT * from lectures where lecture_time = '11am to 1pm' and lecture_day = 'firday'");
$monday_lectures->execute();
$m11to1 = $monday_lectures->fetch();
$lecture = $m11to1["lecture_day"] ?? null;
推荐阅读
- angular - 从 git 克隆后,ionic 5 项目显示空白模板
- reactjs - 无法从后端使用 React.js 设置数据
- excel - VBA Excel在剪切和粘贴后无法编辑文本框中的文本
- gatsby - GatsbyJS : 将调用 Hubspot API 的脚本放在哪里
- android - 用协程替换自定义回调接口?
- c# - 为什么在 DataTable 中应用 RowFilter 时不考虑空值
- sql - EF 是不是在做一些疯狂的事情?
- python - 动态创建 F 组合表达式列表 Django
- jquery - 循环遍历数组并添加 IF 语句
- python - 我真的可以在模拟的 EMR 集群上运行 Spark 作业吗?