Php 未定义索引:图像

Php 未定义索引:图像,php,Php,我试图通过pathfile将一个文件(图像)上传到sql表中,但我一直遇到以下错误:“未定义索引:第3行和第24行的图像”。我已经在userpage中定义了图像。我没有使用BLOB,因为它占用了太多的空间。在我的sql表中,我只是将image列设置为vachar。我已经在xampp中检查了php.ini文件,上载已打开,最大为2MB上载文件。请帮助。tq 以下是用户页面: <?php //useracc-test.php //start session session_start();

我试图通过pathfile将一个文件(图像)上传到sql表中,但我一直遇到以下错误:“未定义索引:第3行和第24行的图像”。我已经在userpage中定义了图像。我没有使用BLOB,因为它占用了太多的空间。在我的sql表中,我只是将image列设置为vachar。我已经在xampp中检查了php.ini文件,上载已打开,最大为2MB上载文件。请帮助。tq

以下是用户页面:

<?php

//useracc-test.php

//start session
session_start();



require 'connect-test.php';
include 'upload.php';

if(isset($_POST['username'])){


    $userName = $_POST['username'];
    $query = "SELECT id, name, username, telno FROM users WHERE username = ?";
    $stmt = $conn->prepare($query);
    $stmt->bind_param('s', $userName);
    $stmt->execute();
    $res = $stmt->get_result(); 
    $row = $res->fetch_array();
    $_SESSION['id'] = $row['id'];
    $_SESSION['name'] = $row['name'];
    $_SESSION['username'] = $row['username'];
    $_SESSION['telno'] = $row['telno'];

}
?>



<html>
<head>
<script type="text/javascript">
function MM_jumpMenu(targ,selObj,restore){ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;
}
</script>
</head>



<body>
<div id="apDiv3">
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span class="TabbedPanelsContent">
  <?php
    echo $_SESSION['id']."<br/>";
    echo $_SESSION['name']."<br/>";
    echo $_SESSION['username']."<br/>";
    echo $_SESSION['telno']."<br/>";
?>




  <?php 



 if(isset($_POST['submit']))

   {

    $id = $_POST['id'];
    $name2 = $_POST['name2'];
    $color2 = $_POST['color2'];
    $hobby2 = $_POST['hobby2'];
    $radiobtn = $_POST['radiobtn'];
    $image = $_POST['image'];




    $stmt = $conn->prepare("INSERT INTO useradvert (id,name2,color2,hobby2,radiobtn,image) VALUES (?,?,?,?,?,?)");
    $stmt->bind_param("isssss",$id,$name2,$color2,$hobby2,$radiobtn,$image);
    $stmt->execute();



   // $stmt->close();
   // $conn->close();

   //think of something later how to close and logout
  /*  <?php unset($_SESSION); 
    session_destroy(); ?> */
   } 


    ?>

</p>

<p>&nbsp;</p>
<form name="form2" 
      action="useracc-test.php" method="post" enctype="multipart/form-data">
  <p>&nbsp;</p>
  <table width="500" border="0">
    <tr>
      <td>category</td>
      <td><select name="jumpMenu" id="jumpMenu" onChange="MM_jumpMenu('parent',this,0)">
        <option value="useracc-test.php" selected>Category</option>
        <option value="useracc-test.php">Members</option>
        <option value="useracc-test2-jumpmenu.php">Non-members</option>
      </select></td>
    </tr>
    <tr>
      <td>ID:</td>
      <td><input name="id" type="text" id="id" value="<?php echo $_SESSION['id']; ?>" ></td>
    </tr>
    <tr>
      <td>Name:</td>
      <td><input type="text" name="name2" id="name2"></td>
    </tr>
    <tr>
      <td>Color</td>
      <td><input type="text" name="color2" id="color2"></td>
    </tr>
    <tr>
      <td>Hobby</td>
      <td><input type="text" name="hobby2" id="hobby2"></td>
    </tr>
    <tr>
      <td>Sex</td>
      <td>male
        <input type="radio" name="radiobtn" id="radio" value="male">
        female
        <input type="radio" name="radiobtn" id="radio2" value="female"></td>
    </tr>
    <tr>
      <td>Image</td>
      <td><input type="file" name="image" id="image"></td>
    </tr>

    <tr>
      <td>&nbsp;</td>
      <td><input type="submit" name="submit" id="submit" value="submit"></td>
    </tr>
  </table>
  <div align="center"></div>
  <p>&nbsp;</p>
</form>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p>
</body>
               </html>
错误行24指的是以下内容

$target_file = $target_dir . basename($_FILES["image"]["name"]);
if ($_FILES["image"]["size"] > 200000) {

所有依赖于post参数的代码都应该在
if-isset($\u post['submit'])
块中。否则,将不会设置其他
$\u POST
$\u文件
参数

您遇到的另一个问题是,您发布到了错误的脚本。表单应该是
action=“upload.php”



您正在尝试访问
$\u文件['image']
外部
ifset($\u POST['submit']
。因此,当脚本在您提交页面之前运行时,没有文件。目录与未定义的索引有什么关系?您理解该错误消息的含义吗?执行一些基本调试。当它告诉您变量有问题时,请查看变量的值。
var\u dump
将显示v的内容变量。因此,如果说
$\u文件['image']
是未定义的,那么您应该做的第一件事是查看
$\u文件中的实际内容。我认为这是简单的常识。
if ($_FILES["image"]["size"] > 200000) {
<?php
if(isset($_POST["submit"])) {
    $target_dir = "uploads/";
    $target_file = $target_dir . basename($_FILES["image"]["name"]);
    $uploadOk = 1;
    $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
    // Check if image or not

    $check = getimagesize($_FILES["image"]["tmp_name"]);
    if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "File is not an image.";
        $uploadOk = 0;
    }

    // Check if file already exists
    if (file_exists($target_file)) {
        echo "Sorry, file already exists.";
        $uploadOk = 0;
    }
    // Check file size
    if ($_FILES["image"]["size"] > 200000) {
        echo "Sorry, your file is too large.";
        $uploadOk = 0;
    }
    // Allow certain file formats
    if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
    && $imageFileType != "gif" ) {
        echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
        $uploadOk = 0;
    }
    // Check if $uploadOk is set to 0 by an error
    if ($uploadOk == 0) {
        echo "Sorry, your file was not uploaded.";
    // if everything is ok, try to upload file
    } else {
        if (move_uploaded_file($_FILES["image"]["tmp_name"], $target_file)) {
            echo "The file ". basename( $_FILES["image"]["name"]). " has been uploaded.";
        } else {
            echo "Sorry, there was an error uploading your file.";
        }
    }
}
?>