php 表单提交时删除文件并记录
php delete file and record when form submits
我有一个从 mySQL 数据库中删除记录的表单。此数据库包含 image/file 名称。
如何添加到语句中以删除网站目录中具有相同 image/file 名称的文件。
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 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
}
使用http://php.net/manual/en/function.unlink.phpunlink($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());
}
我有一个从 mySQL 数据库中删除记录的表单。此数据库包含 image/file 名称。
如何添加到语句中以删除网站目录中具有相同 image/file 名称的文件。
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 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
}
使用http://php.net/manual/en/function.unlink.phpunlink($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());
}