首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除行数据之前删除文件?

删除行数据之前删除文件?
EN

Stack Overflow用户
提问于 2018-11-07 06:26:12
回答 2查看 78关注 0票数 0

在从数据库中删除行数据之前,我想先从上传文件夹中删除该文件。我使用了下面的代码,但它给出了错误。Error=>没有这样的文件或目录

代码语言:javascript
复制
function deleteItem($conn,$product_id)
{
    $stmtgetfile=$conn->prepare("SELECT * FROM tbl_item WHERE product_id=:product_id");
    $stmtgetfile->bindParam('product_id',$product_id);
    $stmtgetfile->execute();
    $row = $stmtgetfile->fetch(PDO::FETCH_ASSOC);
    $item=$row['product_photo'];
    $path="../uploads/".$item;
    unlink($path);
    // $stmtdelete=$conn->prepare("DELETE FROM tbl_item WHERE product_id=:product_id");
    // $stmtdelete->bindParam('product_id',$product_id);
    // if($stmtdelete->execute())
    //     return true;
    // return false;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-07 06:36:34

使用$_SERVER['DOCUMENT_ROOT']获取根目录的绝对路径。

代码语言:javascript
复制
$path=$_SERVER['DOCUMENT_ROOT']."/uploads/".$item;
if(file_exists($path)){
   unlink($path);
}else{
   echo $path; // check path here
}
票数 1
EN

Stack Overflow用户

发布于 2018-11-07 06:29:10

您需要修复$path值才能获得实际路径。对于同样的情况,可以使用__DIR__常量。此外,在尝试删除文件之前,还可以使用file_exists()函数检查文件是否确实存在。似乎数据库中的某些文件路径现在已经不存在了。

代码语言:javascript
复制
$path = __DIR__ . "/../uploads/" . $item;
if (file_exists($path)) {
    unlink($path);
}

另外,如果您只需要product_photo列值,就不要使用Select *。将准备查询语句更改为:

代码语言:javascript
复制
$stmtgetfile=$conn->prepare("SELECT product_photo FROM tbl_item 
                             WHERE product_id=:product_id");

请阅读: considered harmful?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53184518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档