2012-09-18 102 views
3

我有一個表,它將圖像名稱存儲在表中,並將文件存儲在服務器上的文件夾中。我想要做的是能夠從數據庫中刪除記錄,同時從服務器上的文件夾中刪除表格記錄中名稱相應的圖像。任何幫助將下面不勝感激是代碼:我需要幫助從數據庫中刪除記錄時從文件夾中刪除圖像

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)); 
} 

回答

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

您可以使用unlink用PHP來刪除文件。如果您將文件的位置傳遞給它,它將爲您移除它,前提是php在文件所在的目錄中具有正確的權限(有關權限,請參閱chmod)。

因此,在您從數據庫中刪除文件(執行檢查以確保記錄已被刪除)之後,您將繼續在該文件的位置調用unlink。

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

我真的希望在數據庫的路徑數據並非來自用戶的輸入... http://xkcd.com/327/ –

+0

@Armel:試過,但在文件夾中不刪除圖像。文件夾路徑是: - $ path =「../photodiary/」; –

-1

u可以使用取消鏈接...例如

unlink('pathtofile');