我有一个表,它将表中的图像名称和文件存储在服务器上的文件夹中。我想要做的是能够从数据库中删除记录,同时从服务器上的文件夹中删除表记录中具有其名称的相应图像。任何帮助将不胜感激以下是代码:
if ((isset($_POST['hiddenFieldID'])) && ($_POST['hiddenFieldID'] != "")) {
$deleteSQL = sprintf("DELETE FROM photodiary WHERE pdiaryID=%s",
GetSQLValueString($_POST['hiddenFieldID'], "int"));
mysql_select_db($database_connMain, $connMain);
$Result1 = mysql_query($deleteSQL, $connMain) or die(mysql_error());
$deleteGoTo = "adphotodiary.php?user=" . $row_rsadmin['adID'] . "";
if (isset($_SERVER['QUERY_STRING'])) {
$deleteGoTo .= (strpos($deleteGoTo, '?')) ? "&" : "?";
$deleteGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $deleteGoTo));
}
答案 0 :(得分:2)
您将不得不执行SELECT查询以获取文件名并在服务器上检索其路径。然后你可以发送DELETE查询,如果成功,你将删除该文件。
if ((isset($_POST['hiddenFieldID'])) && ($_POST['hiddenFieldID'] != "")) {
$getPathSql = sprintf("SELECT * FROM photodiary WHERE pdiaryID=%s",
GetSQLValueString($_POST['hiddenFieldID'], "int"));
mysql_select_db($database_connMain, $connMain);
$pathResult = mysql_query($getPathSql , $connMain) or die(mysql_error());
$path = ...
$deleteSQL = sprintf("DELETE FROM photodiary WHERE pdiaryID=%s",
GetSQLValueString($_POST['hiddenFieldID'], "int"));
$Result1 = mysql_query($deleteSQL, $connMain) or die(mysql_error());
if($Result1 && is_file($path)) unlink($path);
$deleteGoTo = "adphotodiary.php?user=" . $row_rsadmin['adID'] . "";
if (isset($_SERVER['QUERY_STRING'])) {
$deleteGoTo .= (strpos($deleteGoTo, '?')) ? "&" : "?";
$deleteGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $deleteGoTo));
}
答案 1 :(得分:1)
您可以使用unlink删除带有php的文件。如果您传递文件的位置,它将为您删除它,前提是php在文件所在的目录中具有正确的权限(请参阅chmod获取权限)。
因此,在从数据库中删除文件后(检查以确保删除了记录),然后您将继续调用文件位置的取消链接。
答案 2 :(得分:1)
非常感谢所有帮助过的人。对不起我之前没有更新,但我解决了这个问题。当然,随着每个人的帮助和一些进一步的阅读。 我做的是首先定义目标,然后获取要从浏览器请求中删除的字段的id,运行查询以根据id从数据库中选择字段记录,然后使用php中的unlink函数取消链接最初定义的目标文件夹中的图像。 在此之后,然后继续从表中删除记录。
以下是代码。
$target = "../photodiary/";
if ((isset($_POST['hiddenFieldID'])) && ($_POST['hiddenFieldID'] != "")) {
$imID = $_GET['pdid'];
$query_pd = "SELECT photo FROM photodiary WHERE pdiaryID = $imID";
$resulttt = mysql_query($query_pd) or die('Error, get image info failed. ' . mysql_error());
$row = mysql_fetch_assoc($resulttt);
if(($row['photo']) != "")
{
unlink($target . $row['photo']);
}
$deleteSQL = sprintf("DELETE FROM photodiary WHERE pdiaryID=%s",
GetSQLValueString($_POST['hiddenFieldID'], "int"));
mysql_select_db($database_connMain, $connMain);
$Result1 = mysql_query($deleteSQL, $connMain) or die(mysql_error());
$deleteGoTo = "confirm_del.php?user=" . $row_rsadmin['aID'] . "";
if (isset($_SERVER['QUERY_STRING'])) {
$deleteGoTo .= (strpos($deleteGoTo, '?')) ? "&" : "?";
$deleteGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $deleteGoTo));
}
答案 3 :(得分:0)
你可以使用unlink($pathtofile) php函数
答案 4 :(得分:-1)
unlink('pathtofile');