PHP 错误:“尝试访问 null 类型值的数组偏移量”[duplicate]

PHP Error: "Trying to access array offset on value of type null" [duplicate]

提问人:s123 提问时间:11/15/2022 最后编辑:s123 更新时间:4/18/2023 访问量:703

问:

所以我有这个代码从数据库中获取数据,我只想把它们列出来,但它在数组“[3] =>”中添加了另一件事,即使我的数据库中只有 3 件事(它从 0 开始计数)。但是因为 [3] 是空的,它给了我预期的输出(“user1user2user3”),然后它给了我错误消息“尝试访问 null 类型值的数组偏移量”。如何删除此消息或阻止它添加 [3]?这是我的代码:

$fetch_data = mysqli_query($conn, "select username, email from login");
while($check_data[] = mysqli_fetch_array($fetch_data));

print_r($check_data);

$id_check_username = 0;
foreach($check_data as $id_check_username => $username){
    echo $check_data[$id_check_username][0]; /*this is line 48*/
};

这是我的输出:

数组 ( [0] => 数组 ( [0] => user1 [用户名] => user1 [1] => email1 [电子邮件] => 电子邮件 1 ) [1] => 数组 ( [0] => user2 [用户名] => user2 [1] => 电子邮件 2 [电子邮件] => 电子邮件 2 ) [2] => 数组 ( [0] => user3 [用户名] => user3 [1] => email3 [电子邮件] => email3 ) [3] => ) 用户1用户2用户3

警告:尝试访问值 在第 48 行键入 null

这是什么意思?

php sql 错误处理 foreach mysqli

评论


答:

0赞 shingo 11/15/2022 #1

显然是空的,你用来获取结果的方式是一种不好的做法。如果要提取所有行,请使用 mysqli_fetch_all$check_data[3]

$check_data = mysqli_fetch_all($fetch_data);

如果您更喜欢逐个获取行,最好先获取一行,然后将其分配给数组。

while($row = mysqli_fetch_array($fetch_data))
    $check_data[] = $row;

此外,在代码中已经包含行数据,循环可以简化为:$username

foreach($check_data as $username)
    echo $username[0];