2016-09-01 10 views
1

こんにちは私はこの単純な削除スクリプトを手に入れましたが、フォルダ内の1つのファイルを削除することしかできません。私はリンクを解除しようとしているいくつかの違ったものを試しましたが、うまくいきません。誰がそれがどのように行われているか知っていますか?unlinkを使用して複数のファイルを削除

$id = $_GET['id']; 
$sql_get = "SELECT shop.id, shop.overskrift, shop.pris, shop.text, shop_pictures.ShopPictures_id, shop_pictures.shop_pictures_file 
      FROM shop INNER JOIN shop_pictures 
      ON shop.id = shop_pictures.fk_shop_pictures_shop_id WHERE Id=$id"; 
$result_get = mysqli_query($connection, $sql_get); 
$row = mysqli_fetch_all($result_get); 

$sql = "DELETE FROM shop WHERE Id=$id"; 
$result = mysqli_query($connection, $sql); 

$sql = "DELETE FROM shop_pictures WHERE fk_shop_pictures_shop_id=$id"; 
if(!empty($row)) { 
    foreach($row as $data) { 
     unlink('../../img/shop_pictures/'.$data['shop_pictures_file']); 
    } 
} 
$result = mysqli_query($connection, $sql); 

//header('Location: ../members.php');exit; 
+0

どのように各結果をループするつもりですか? – Blake

+0

私は何を求めているのですか?私はリンク解除をループしたい。私は4つの画像をアップロードし、そのスクリプトで削除しようとすると1個だけ削除する – Jeno

+0

'$ pics_being_deleted'はこのスクリプトのどこにも定義されていません。どのファイルを削除したいのか、それらのファイルをどのようにループしているのかは不明です。 – Blake

答えて

2

あなたのコードは、恐らくSQL Injectionの影響を受けやすいので、それに対処してください。ただし、結果をループする必要があります。

$row = mysqli_fetch_array($result_get);はあなたの代わりにこのようなものを使用することを確認し、1件の結果をフェッチ:

$row = mysqli_fetch_all($result_get, MYSQLI_ASSOC);

if(!empty($row) { 
    foreach($row as $data) { 
     unlink('../../img/shop_pictures/'.$data['shop_pictures_file']); 
    } 
} 

また、あなたがこのような何か行うことができます:

while ($row = mysql_fetch_array($result_get)) { 
    unlink('../../img/shop_pictures/'.$row['shop_pictures_file']); 
} 

あなたを指している必要があります正しい方向に。

+0

どうにか私はそれを働かせることができませんフォルダ内の画像は一切削除されていません – Jeno

+0

それはクエリの結果は次のとおりです。ディレクトリに存在するファイルではありません。 – Blake

+0

fk_shop_pictures_shop_id の画像をショップテーブルの画像と同じように削除してください。 – Jeno

関連する問題