У меня есть форма, которая удаляет запись из базы данных 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());
}
Попробуй использовать функция отмены связи:
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
}
использование 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_*
функции устарели и удаляются. Они небезопасны.
Попробуй это
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());
}
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());
}