使用 Post 的 PHP 表单。 错误:未定义的数组键 [duplicate]

PHP form using Post. Error: Undefined array key [duplicate]

提问人:Destinovic 提问时间:5/8/2023 更新时间:5/8/2023 访问量:628

问:

这个问题在这里已经有答案了:
“注意:未定义的变量”、“注意:未定义的索引”、“警告:未定义的数组键”和“注意:未定义的偏移量”( 29 个答案)
7个月前关闭。

HTML格式:

    <form  action="submit.php" method="POST" >
 <div class="file-input">
              
              <input type="file" class="attestat" id="attestat" name="attestat" accept="application/pdf, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document, image/*" multiple="multiple">
              <span class="file-name">Выберите файл</span>
            </div>
</form>

和 PHP:

<?php
$servername = "localhost";
$username = "root";
$password = "Youshit21";
$dbname = "medacc";

$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}



  $filetmpname = $_FILES["attestat"]["tmp_name"];

  $id = uniqid('user_');

  $sql = "INSERT INTO medacc.spaco(id,filo) VALUES ('$id', '$filetmpname')";
  if ($conn->query($sql) === TRUE) {
    echo "File uploaded successfully.";
  } else {
    echo "Error: " . $sql . "<br>" . $conn->error;
  }





$conn->close();

?>

并且它总是显示此错误: 警告:第 14 行 D:\localhost\acceptance form\submit.php 中未定义的数组键“attestat”

警告:尝试访问第 14 行 D:\localhost\acceptance form\submit.php 中 null 类型的值的数组偏移量

代码将文件插入到MySQL表中,但它根本看不到文件输入 无论我做什么都不会改变your text

php html 表单 mysqli

评论

3赞 brombeer 5/8/2023
php.net/manual/en/features.file-upload.post-method.php......缺少 enctype
0赞 Destinovic 5/8/2023
你能更详细地说吗?
0赞 Sachin 5/8/2023
您没有在表单标记中添加 multipart/form-data。
4赞 Nico Haase 5/8/2023
此外,请注意,您的查询极易受到 SQL 注入的攻击。查看准备好的报表以避免被黑客入侵INSERT
2赞 brombeer 5/8/2023
如果你想处理文件上传,是必须的!enctype="multipart/form-data"

答:

-2赞 Mansoor Qurishi 5/8/2023 #1

请在表单标签中添加此属性 enctype=“multipart/form-data” 来解决您的问题。
喜欢这个:

 <form  action="submit.php" method="POST" enctype="multipart/form-data" >

有关更多详细信息,您可以点击此链接

评论

1赞 Dharman 5/8/2023
这已经在这里得到了 stackoverflow.com/questions/19027992/ 的回答......请不要添加重复的答案。
0赞 vins 5/8/2023 #2

我猜你没有提交表格......此外,由于您要接受多个文件,因此需要这样的东西

<form action="submit.php" method="POST" enctype="multipart/form-data">
  <div class="file-input">
    <input type="file" class="attestat" id="attestat" name="attestat[]" accept="application/pdf, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document, image/*" multiple="multiple">
    <span class="file-name">Выберите файл</span>
  </div>
  <button type="submit">Submit</button>
</form>