php删除表单提交时的文件和记录

时间:2015-04-24 13:26:24

标签: php html mysql delete-row delete-file

我有一个从mySQL数据库中删除记录的表单。该数据库包含图像/文件名。

如何添加到语句中以使用相同的图像/文件名删除网站目录中的文件。

if ((isset($_POST['file_name'])) && ($_POST['file_name'] != "")) {
  $deleteSQL = sprintf("DELETE FROM image_carousel WHERE image_name=%s",
                       GetSQLValueString($_POST['file_name'], "text"));

  mysql_select_db($database_attibfn, $attibfn);
  $Result1 = mysql_query($deleteSQL, $attibfn) or die(mysql_error());
}

4 个答案:

答案 0 :(得分:2)

使用http://php.net/manual/en/function.unlink.php unlink($filename);

您可能希望从数据库中获取文件名,并验证它是否存在。不要盲目信任用户输入。

使用http://php.net/manual/en/function.file-exists.php file_exists($filename)检查是否存在。

所以,结束逻辑应该是这样的:

  • 如果提交了文件名,并且它不是空的
  • 然后检查文件名是否在数据库中
  • 然后检查文件是否存在
  • 然后删除文件
  • 然后从数据库中删除文件
  • 的行

类似的东西:

if (isset($_POST['file_name']) && !empty($_POST['file_name'])) {
  mysql_select_db($database_attibfn, $attibfn);

  $select = ""; // select filename query
  $filename = mysql_query($select) or die(mysql_error());

  if (!$filename || !file_exists($filename)) {
    // Handle it! Throw an exception or something
  }

  unlink($filename);

  $deleteSQL = sprintf(
    "DELETE FROM image_carousel WHERE image_name=%s",
    GetSQLValueString($_POST['file_name'], "text")
  );

  $Result1 = mysql_query($deleteSQL, $attibfn) or die(mysql_error());
}

另外,请考虑使用PDO,或至少使用MySQLi。

http://php.net/manual/en/book.pdo.php

http://php.net/manual/en/book.mysqli.php

mysql_*函数已被弃用并被删除。他们是不安全的。

答案 1 :(得分:0)

试试这个

if ((isset($_POST['file_name'])) && ($_POST['file_name'] != "")) {
  $deleteSQL = sprintf("DELETE FROM image_carousel WHERE image_name=%s",
                       GetSQLValueString($_POST['file_name'], "text"));
//delete file
unlink(<absolute path>/<filename>);
  mysql_select_db($database_attibfn, $attibfn);
  $Result1 = mysql_query($deleteSQL, $attibfn) or die(mysql_error());
}

答案 2 :(得分:0)

if ((isset($_POST['file_name'])) && ($_POST['file_name'] != "")) {
  $deleteSQL = sprintf("DELETE FROM image_carousel WHERE image_name=%s",
                       GetSQLValueString($_POST['file_name'], "text"));

 unlink('/path/to/your/image/folder/'.$_POST['file_name']);    

  mysql_select_db($database_attibfn, $attibfn);
  $Result1 = mysql_query($deleteSQL, $attibfn) or die(mysql_error());
}

答案 3 :(得分:-1)

尝试使用unlink function

unlink('/path/of/your/image/');

在您的代码中:

if ((isset($_POST['file_name'])) && ($_POST['file_name'] != "")) {
$deleteSQL = sprintf("DELETE FROM image_carousel WHERE image_name=%s",
                   GetSQLValueString($_POST['file_name'], "text"));

mysql_select_db($database_attibfn, $attibfn);
$Result1 = mysql_query($deleteSQL, $attibfn) or die(mysql_error());

unlink('/path/'.$_POST['file_name']); // remove the image
}