我有一个从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 :(得分: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
}