如果将文件移动到其他目标,是否可以删除数据库行


Can a database row be deleted if a file is moved into a different destination?

>我有一个文件,可以根据用户在单独页面上单击的按钮移动到 2 个位置:

目前我已经声明如果文件移动到"ImageFiles"文件夹,然后移动文件夹并插入数据库行。

但是我还想包括,如果文件尚未上传到"ImageFiles"文件夹,请使用以下代码删除数据库行:

$imagecancelsql = "DELETE FROM Image 
                   WHERE ImageFile = 'ImageFiles/".
                   mysql_real_escape_string($_FILES['fileImage']['name'])."'";
mysql_query($imagecancelsql);

这是否可以做到,如果是这样,如何在我在 php 脚本中的当前 if/else 语句中编写它?

下面是 php 脚本:

<?php
session_start();

...//connect to DB
$result = 0;
if( is_file("ImageFiles/".$_FILES['fileImage']['name'])) {
$parts = explode(".",$_FILES['fileImage']['name']);
$ext = array_pop($parts);
$base = implode(".",$parts);
$n = 2;
while( is_file("ImageFiles/".$base."_".$n.".".$ext)) $n++;
$_FILES['fileImage']['name'] = $base."_".$n.".".$ext;
    move_uploaded_file($_FILES["fileImage"]["tmp_name"],
    "ImageFiles/" . $_FILES["fileImage"]["name"]);
    $result = 1;
    $imagesql = "INSERT INTO Image (ImageFile) 
    VALUES ('ImageFiles/".mysql_real_escape_string($_FILES['fileImage']['name'])."')";
    mysql_query($imagesql);
}
    else
      {
      move_uploaded_file($_FILES["fileImage"]["tmp_name"],
      "ImageFiles/" . $_FILES["fileImage"]["name"]);
      $result = 1;
        $imagesql = "INSERT INTO Image (ImageFile) 
        VALUES ('ImageFiles/".mysql_real_escape_string($_FILES['fileImage']['name'])."')";
mysql_query($imagesql);
      }

如果我理解正确,以下代码应该按预期工作。如果找到该文件,新文件将重新发送该文件,并在数据库中插入一个新条目。如果未找到该文件,则会从表中删除数据库条目。

// Stores the final result
// 0 = File wasnt uploaded and the row has been removed from table
// 1 = File was uploaded and the row has added to the table
$result = 0;
if (is_file("ImageFiles/" . $_FILES['fileImage']['name'])) {
    move_uploaded_file($_FILES["fileImage"]["tmp_name"], "ImageFiles/" . $_FILES["fileImage"]["name"]);
    $imagesql = "INSERT INTO Image (ImageFile) VALUES ('ImageFiles/".mysql_real_escape_string($_FILES['fileImage']['name'])."')";
    mysql_query($imagesql);
    // Mark result as 1 - we have added the file to teh folder and a entry to the table
    $result = 1;
} else {
    $imagecancelsql = "DELETE FROM Image WHERE ImageFile = 'ImageFiles/" . mysql_real_escape_string($_FILES['fileImage']['name'])."'";
    mysql_query($imagecancelsql);
}