Php 注意:尝试访问第行(静态)中null类型值的数组偏移量

Php 注意:尝试访问第行(静态)中null类型值的数组偏移量,php,Php,我收到了这个错误: 注意:尝试访问null类型值上的数组偏移量 当我想更新时。我把代码放在下面,请帮助我如何解决这个问题,故障和问题在哪里?(在正常情况下不会出现错误,但当我使用ctrl+U并查看源代码时,所有字段都会显示该错误。) 我在网站上搜索了很多,但没有找到正确的答案或结果 editform.php中的 <?php include_once "InsertDataDatabases.php"; $id = (isset($_POST['id']) ? $_POS

我收到了这个错误:

注意:尝试访问null类型值上的数组偏移量

当我想更新时。我把代码放在下面,请帮助我如何解决这个问题,故障和问题在哪里?(在正常情况下不会出现错误,但当我使用ctrl+U并查看源代码时,所有字段都会显示该错误。) 我在网站上搜索了很多,但没有找到正确的答案或结果

editform.php中的

<?php
include_once "InsertDataDatabases.php";
$id = (isset($_POST['id']) ? $_POST['id'] : '');
$query = InsertDataDatabases::SelectDateId($id);
$item = [];
$item = mysqli_fetch_assoc($query);
?>
<form action="updatedata.php" method="post" enctype="multipart/form-data">
    <?php CSRF::CreateToken(); ?>
    <input type="text" name="id" value="<?php echo $item['id']; ?>"><br>
    <label for="name">Name:</label>
    <input type="text" name="name" value="<?php echo $item['name']; ?>"><br><br>
    <label for="email">Email:</label>
    <input type="email" name="email" value="<?php echo $item['email']; ?>"><br><br>
    <input type="file" name="image" value="images/slider/<?php echo $item['image']; ?>"><br>
    <img src="images/slider/<?php echo $item['image']; ?> " width="50px" height="50px" alt=''><br>
    <input type="submit" name="updatebtn" value="UPDATE">

</form>
<?php
include_once "InsertDataDatabases.php";
include_once "DataBase.php";
include_once "CSRF.php";
$con = DataBase::ConnectOpen();
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if (isset($_POST['updatebtn'])) {
        if (CSRF::ValidateToken($_POST["token"])) {
            $id = htmlentities(mysqli_real_escape_string($con, $_POST['id']));
            $name = htmlentities(mysqli_real_escape_string($con, $_POST['name']));
            $email = htmlspecialchars(mysqli_real_escape_string($con, filter_var(trim($_POST['email']), FILTER_SANITIZE_EMAIL)));
            $image = $_FILES['image'];
            InsertDataDatabases::UpdateData($id, $name, $email, $image);
            mysqli_close($con);
            header("Location: index.php");
        }
    }
}
public static function SelectDateId($id)
    {
        self::ConnectDataBase();
        return mysqli_query(self::$con, "SELECT * FROM user WHERE id = '{$id}'");
        
    }
 
public static function UpdateData($id, $name, $email, $image)
    {
        self::ConnectDataBase();
        $path = "images/slider";
        $image_new = self::ImageUpload($image, $path);
        if (empty($image_new)) {
            $query = self::EditDataId($id);
            $item = [];
            $item = mysqli_fetch_assoc($query);
            $image_new = $item['image'];
        }
        mysqli_query(self::$con, "update user set name = '$name', email = '$email', image = '$image_new' where id = '$id'");
    } 
    

查看源代码时,您没有发布表单,因此未设置
$\u POST
变量。在尝试使用
$\u POST
变量之前,应检查该变量是否已设置

<?php
include_once "InsertDataDatabases.php";
if (isset($_POST['id'])) {
    $id = $_POST['id'];
    $query = InsertDataDatabases::SelectDateId($id);
    $item = [];
    $item = mysqli_fetch_assoc($query);
    ?>
    <form action="updatedata.php" method="post" enctype="multipart/form-data">
        <?php CSRF::CreateToken(); ?>
        <input type="text" name="id" value="<?php echo $item['id']; ?>"><br>
        <label for="name">Name:</label>
        <input type="text" name="name" value="<?php echo $item['name']; ?>"><br><br>
        <label for="email">Email:</label>
        <input type="email" name="email" value="<?php echo $item['email']; ?>"><br><br>
        <input type="file" name="image" value="images/slider/<?php echo $item['image']; ?>"><br>
        <img src="images/slider/<?php echo $item['image']; ?> " width="50px" height="50px" alt=''><br>
        <input type="submit" name="updatebtn" value="UPDATE">
    
    </form>
<?php }


您正在使用
GET
请求查看源代码,因此未填写
$\u POST['id']
editform.php
需要检查请求方法,就像
updatedata.php
一样。对不起,我不理解你的提示,请详细解释一下你在
updatedata.php
中有此代码:
如果($\u服务器['request\u方法]='POST')){
您需要在
editform.php
中使用类似的代码,谢谢,我这样做了,但是我得到了以前的结果,没有得到正确的结果。请允许我将该部分的修订代码放在这里吗?警告:您完全可以使用参数化的预处理语句,而不是手动生成查询。它们由或b提供y.永远不要信任任何类型的输入!即使您的查询仅由受信任的用户执行。非常感谢,但我有两个问题。第一:当我想查看源代码时遇到“文档过期”错误,在浏览器中使用“重试”键后,我输入了源代码,但我没有在body标记之间输入任何代码。Second:我如何理解如果源代码中再次出现此错误?(虽然当我通过Inspect元素进行分析时,我没有任何错误)您认为这是真的吗?它不会显示表单,除非它可以查找
$item
的值。如果没有
$\u POST['id']
谢谢,如果源代码中再次出现此错误,我该如何理解?(虽然当我通过Inspect元素分析时,我没有任何错误)您认为这是真的吗?“文档过期”如果您试图在原始提交表单后过长时间重新加载表单提交,则会发生这种情况,以防止重复表单。非常感谢您的指导。这非常有帮助。如果我再次遇到任何问题,是否可以在此寻求您的帮助和指导?