从文件夹和mysql连接表

时间:2017-12-13 12:31:42

标签: php mysql inner-join

我有一个文件上传系统,我可以从MySQL DB和文件夹中删除。 唯一的问题是文件夹中的所有文件都被删除而不是单个文件。每个文件夹都是一个具有人名的自定义文件夹。

我有一个连接表,其中两个表的id相等。我需要join tabled来接收知道文件位置的人的姓名。

到目前为止,这是我的工作代码,删除了多个文件而不是我选择的文件:

$analyse = mysqli_query($conn, "SELECT *
                                FROM analyse
                                INNER JOIN persons ON 
                                analyse.id_person = persons.id");

while ($row = mysqli_fetch_array($analyse)) {
    $img = $row['img_name'];
    $name= $row['name'];
    $frontname= $row['frontname'];
    $image_url = "../persons/{$name} {$frontname}/analyse/{$img}";
    $result = mysqli_query($conn, "DELETE FROM analyse WHERE id=$id");
    unlink($image_url);
    if($result){
        header('Location: ' . $_SERVER['HTTP_REFERER']);
    } else {
        echo "Failed to delete";
    }
}

例如:ID为15的人X有三个图像,这些图像具有不同的ID,但每次都有人的ID(15)。我希望能够删除单个选定文件而不是所有ID为15的文件。

更新 我找到了解决方案,用于删除的ID始终是我的数据库行中的第一个。取出我的阵列是错误的,因此我的ID也是如此。 谢谢你的回答。

1 个答案:

答案 0 :(得分:0)

尝试将限制1与删除查询一起使用。

$analyse = mysqli_query($conn, "SELECT *
                                FROM analyse
                                INNER JOIN persons ON analyse.id_person = persons.id");

while ($row = mysqli_fetch_array($analyse)) {
    $img = $row['img_name'];
    $name= $row['name'];
    $frontname= $row['frontname'];
    $image_url = "../persons/{$name} {$frontname}/analyse/{$img}";
    $result = mysqli_query($conn, "DELETE FROM analyse WHERE id=$id LIMIT 1");
    unlink($image_url);
    if($result){
        header('Location: ' . $_SERVER['HTTP_REFERER']);
    } else {
        echo "Failed to delete";
    }
}