我有一个文件上传系统,我可以从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也是如此。 谢谢你的回答。
答案 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";
}
}