Php 注意:尝试访问第行(静态)中null类型值的数组偏移量
我收到了这个错误: 注意:尝试访问null类型值上的数组偏移量 当我想更新时。我把代码放在下面,请帮助我如何解决这个问题,故障和问题在哪里?(在正常情况下不会出现错误,但当我使用ctrl+U并查看源代码时,所有字段都会显示该错误。) 我在网站上搜索了很多,但没有找到正确的答案或结果 editform.php中的Php 注意:尝试访问第行(静态)中null类型值的数组偏移量,php,Php,我收到了这个错误: 注意:尝试访问null类型值上的数组偏移量 当我想更新时。我把代码放在下面,请帮助我如何解决这个问题,故障和问题在哪里?(在正常情况下不会出现错误,但当我使用ctrl+U并查看源代码时,所有字段都会显示该错误。) 我在网站上搜索了很多,但没有找到正确的答案或结果 editform.php中的 <?php include_once "InsertDataDatabases.php"; $id = (isset($_POST['id']) ? $_POS
<?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元素分析时,我没有任何错误)您认为这是真的吗?“文档过期”如果您试图在原始提交表单后过长时间重新加载表单提交,则会发生这种情况,以防止重复表单。非常感谢您的指导。这非常有帮助。如果我再次遇到任何问题,是否可以在此寻求您的帮助和指导?