html — php удаляет файл и записывает когда отправляет форму

У меня есть форма, которая удаляет запись из базы данных 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());
}

0

Решение

Попробуй использовать функция отмены связи:

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
}
-1

Другие решения

использование 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_* функции устарели и удаляются. Они небезопасны.

2

Попробуй это

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());
}
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());
}
0
По вопросам рекламы [email protected]