-2

データベースからレコードを削除する次のコードがあります。ただし、関連するファイルをサーバーから削除することもできます。列の1つには、ファイルへのパスが含まれています。ここでリンク解除機能を使用する方法を誰かが説明できますか?

<?php

 include('config.php');

 if (isset($_GET['id']) && is_numeric($_GET['id']))
 {    
     $id = $_GET['id'];      
     $result = mysql_query("DELETE FROM images WHERE id=$id")     
     or die(mysql_error());      
     header("Location: view.php");
 }   
 else    
 {
     header("Location: view.php");
 }

?>
4

3 に答える 3

2

何よりもまず、SQLインジェクションの穴を修正してください。

質問に答えるには、まず、そのローカルファイルに関する詳細のレコードを選択する必要があります。データベースレコードを削除すると、ファイルの場所が保存されている唯一の場所が失われるため、最初にそのデータを取得します。

これで、擬似コードで次のようになります。

  1. ファイルの場所を取得する
  2. ファイルを削除する
  3. データベースレコードを削除する
于 2012-04-04T22:03:05.697 に答える
1

最初にクエリを実行してイメージ名を取得し、その後ファイルを削除するだけです。

unlink($theFilenameRetrievedFromDb);
于 2012-04-04T22:02:56.287 に答える
1

ファイルのパスを知るには、最初にデータベースに対してselectステートメントを作成する必要があります。これが完了したら、このパスでリンク解除を使用して、削除ステートメントを作成できます。

于 2012-04-04T22:03:34.703 に答える