首页 > 解决方案 > 如何修复尝试访问空类型值的数组偏移量错误

问题描述

我正在使用 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 类型值的数组偏移量

标签: phparraysmysqli

解决方案


当您在从数据库获取数据后收到此错误时,这意味着数据库没有找到任何匹配的行。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;

推荐阅读