在PHP中更新图像类别时出错

时间:2013-08-10 06:40:28

标签: php mysql

我使用下面的代码更新数据库中的图像和类别。代码更新类别名称,但不更新图像。它显示错误

  

未定义的索引:图片输入   C:\xampp\htdocs\project1\catalog\editcat.php on line 44

第44行是:

  $img=$_FILES['picture']['name'];

PHP:

<?php

    $id=$_POST['categoryid'];
    $name=$_POST['categoryname'];
    $img=$_FILES['picture']['name'];
    $target="upload";
    $qry=mysql_query("UPDATE category SET categoryname='$name' WHERE category_id=$id");



    if(!$qry)
    {
        die("Query Failed: ". mysql_error());
}?>
<?php
    if($img)
    {
        $image= addslashes(file_get_contents($_FILES['picture']['name']));
        $image_name= addslashes($_FILES['picture']['name']);

        move_uploaded_file($_FILES["picture"]["name"],$target."/" . $_FILES["picture"]["name"]);

        $location=$target."/". $_FILES["picture"]["name"];
        //$name=$_POST['categoryname']; 
        $qry=mysql_query("UPDATE category SET uploadedfile='$location' WHERE category_id=$id");
    }

    if(!$qry)
    {
        die("Query Failed: ". mysql_error());
    }
 ?>

HTML:

<tr>
    <td align="right" class="label" width="40%""><font color="blue">Category ID:</font>        </td>
    <td align ="left" width="60%"><input type="text" name="categoryid" id="categoryid"   value="<?php echo $entries['category_id']; ?>" /></td>
</tr> 
<tr>
    <td align="right" class="label" width="40%""><font color="blue">Category Name:</font> </td>
    <td align ="left" width="60%"><input type="text" name="categoryname" id="categoryname" value="<?php echo $entries['categoryname']; ?>" /></td>
</tr> 
<tr><td align ="right" class="label" width="40%"><font color="blue">Upload File:  </font></td>
    <td align="left" width ="60%">  <input type="file" name="picture" ></td></tr>
<tr><td class="label" align="right">&nbsp;</td><td align="left"><input  type="submit" name="Submit" value="Upload" id="button1" /></td>
</tr>

2 个答案:

答案 0 :(得分:0)

请更改代码中的某些行:

//$image= addslashes(file_get_contents($_FILES['picture']['name']));

以上变量未使用

更改此行

move_uploaded_file($_FILES["picture"]["name"],$target."/" . $_FILES["picture"]["name"]);

move_uploaded_file($_FILES["picture"]["tmp_name"],$target."/" . $image_name);

如果您没有使用未在服务器上传的文件,请确保您已在表单中添加属性。

enctype="multipart/form-data"

这是代码      

 if($img)
 {
   $image_name= addslashes($_FILES['picture']['name']);

    move_uploaded_file($_FILES["picture"]["tmp_name"],$target."/" . $image_name);

    $location=$target."/". $image_name;
    //$name=$_POST['categoryname'];
$qry=mysql_query("UPDATE category SET uploadedfile='$location' WHERE category_id=$id");
}

if(!$qry)
{
  die("Query Failed: ". mysql_error());
}
?>

答案 1 :(得分:0)

尝试以下解决方案。其背后的原因是您在分配位置之前移动文件。它可能会清除$_FILES["picture"]["name"]

所以我建议你在帖子之后指定$img。使用该变量 不应该在任何阶段清楚。然后在移动文件时使用$_FILES['picture']['tmp_name']

 move_uploaded_file($_FILES['picture']['tmp_name'],$target."/" . $img);
 $location=$target."/". $img;