如何修复尝试访问null类型值上的数组偏移错误



我正在使用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>";
}

但我得到以下错误的上述代码:

警告:试图访问C:xampphtdocsnexgschooladminnotifyadd_time_table.php第45行中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;
<section class="appl">
<div class="appl-form">
<h1>Edit Form</h1>
<?php

include('database_conn.php');


if ($_SERVER["REQUEST_METHOD"] === "POST") {
//if(isset($_POST['submit'])) {
$names = $_POST['names'];
$sex = $_POST['sex'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$qualifications = $_POST['qualifications'];

$sql = "UPDATE appl_table SET names='$names', sex='$sex', email='$email', phone='$phone', qualifications='$qualifications' WHERE id = ".$_GET["id"];

if (mysqli_query($con, $sql)) {
echo "Record updated successfully";
//echo  "<div class="alert alert-success">Record updated successfully</div>";
} else {
echo "Error updating record: " . mysqli_error($con);
}
}


$id="";
$name = "";
$gender = "";
$email = "";
$phone = "";
$qualification = "";
if(isset($_GET['id']))
{


try{
$sql = "SELECT names, sex, email, phone, qualifications FROM appl_table WHERE id=".$_GET["id"];
$query = mysqli_query($con,$sql);
$data = mysqli_fetch_assoc($query);
$id = $_GET["id"];
$name = $data["names"];
$gender = $data["sex"];
$email = $data["email"];
$phone = $data["phone"];
$qualification = $data["qualifications"];
}
catch(Exception $ex)
{

?><h3><?php echo $ex->getMessage()." ".mysqli_error($con);?></h3><?php
}

}else
{

}

?>
<form action="update.php?id=<?php echo $id; ?>" method="POST">
<input type="text" name="names" placeholder="Full Name" value="<?php echo $name; ?>" required>
<select name="sex" id="" class="sex">
<option><?php echo $gender; ?></option>
<option value="Male" name="gender">Male</option>
<option Value="Female" name="gender">Female</option>
</select>
<input type="text" name="email" placeholder="Email" value="<?php echo $email; ?>" required>
<input type="text" name="phone" placeholder="Phone" value="<?php echo $phone; ?>" required>
<input type="" name="qualifications" placeholder="Qualifications" value="<?php echo $qualification; ?>" required>
<!--<input type="" name="" placeholder="Lorem" required>
<input type="" name="" placeholder="Lorem" required>
<input type="" name="" placeholder="Lorem" required>
<input type="" name="" placeholder="Lorem" required>-->
<!--<textarea name="" id="" cols="30" rows="10" placeholder="Your Message"></textarea>-->
<button type="submit"  name="submit">Save</button>
</form>
</div> 
</section>

最新更新