为什么当我从数据库中删除图像而不同时从服务器文件夹中删除图像时?

时间:2018-08-23 19:16:19

标签: php mysql file server unlink

问题在于删除操作仅从数据库而不是从服务器文件夹完成。我的代码有错误吗?

此deleteIMG.php

<?php
include('dbh.inc.php');
if (isset($_POST['submit4'])) {



    //DELETE FILE
    $del_img=$_GET['name'];
    $queryy = "DELETE FROM table1 WHERE name='$del_img'";
    $result = mysqli_query($conn, $queryy);

    if ($result) {
        ?> <script> alert('This image has been deleted.'); window.location ="/pages/pictures.php"; </script>
        <?php 
        unlink("/pages/uploads/$del_img");
    } else {
        ?>
        <script> alert('This image not yet deleted.'); window.location ="/pages/pictures.php"; </script>
        <?php
    }
}   




?>

3 个答案:

答案 0 :(得分:1)

更新

最终的答案是将unlink("/pages/uploads/$del_img");更改为unlink("pages/uploads/$del_img");,因为绝对路径错误。

如果实际上已经阅读并遵循了我的原始答案,那么可以避免这种崩溃。


根据unlink()的文档:

  

删除文件名。与Unix C unlink()函数类似。失败时将生成 E_WARNING 级错误。


因此unlink("/pages/uploads/$del_img");可能会产生错误,但是Java重定向会在您有机会在浏览器中看到错误之前发生。

您需要检查PHP日志中是否有错误,或者在调试代码时暂时停止重定向。

另外,请确保已设置error_reporting( E_ALL );

答案 1 :(得分:-1)

可能是取消链接功能正在生成错误。 您应该使用检查来检查取消链接功能是否正常工作。 请遵循下面给出的代码。...

if(unlink("/pages/uploads/$del_img")){
  echo 'File deleted successfully'.
}else{
  die('Error');
} 

答案 2 :(得分:-2)

在执行PHP unlink命令之前,您正在执行javascript window.location。只需重新组织代码,使其看起来像这样:

if ($result) {
        unlink("/pages/uploads/$del_img");
        ?> 
<script> 
   alert('This image has been deleted.'); window.location ="/pages/pictures.php"; </script>
        <?php 
    } else {
        ?>
        <script> alert('This image not yet deleted.'); window.location ="/pages/pictures.php"; </script>
        <?php
    }?>