2017-03-02 99 views
0

我是PHP的初學者,我需要做的是從我上傳的文件夾中刪除以及從phpMyAdmin刪除數據庫中的一行信息。我知道我必須實現一個取消鏈接,但我不確定如何將其放置在我的代碼中。任何幫助,將不勝感激。謝謝。如何從PHP文件夾中刪除圖像並從phpMyAdmin中刪除文件名?

$dbc = mysqli_connect('localhost', 'root', 'root', 'myimages'); 

$files = glob("uploads/*.*"); 

if (isset($_GET['id']) && is_numeric($_GET['id'])) { 

$query = "SELECT title FROM imagedata WHERE id={$_GET['id']}"; 

if ($r = mysqli_query($dbc, $query)) { 
    $row = mysqli_fetch_array($r); 

    print '<form action="delete_image.php" method="post"> 
    <p style="color: red;">Are you sure you want to delete this image?</p> 
    <p><h4>' . $row['title'] . '</h4><br> 
    <input type="hidden" name="id" value="' . $_GET['id'] . '"> 
    <input type="submit" name="submit" value="Delete this image"></p> 
    </form>'; 
} else { 
    print '<p style="color: red;">Could not retrieve the image because:<br>' . mysqli_error($dbc) . '.</p><p>The query being run was: ' . $query . '</p>'; 
} 

} elseif (isset($_POST['id']) && is_numeric($_POST['id'])) { 

$query = "DELETE FROM imagedata WHERE id={$_POST['id']} LIMIT 1"; 
$r = mysqli_query($dbc, $query); 

if (mysqli_affected_rows($dbc) == 1) { 
    print '<p>The image has been deleted.</p>'; 
} else { 
    print '<p style="color: red;">Could not delete the image because:<br>' . mysqli_error($dbc) . '.</p><p>The query being run was: ' . $query . '</p>'; 
} 

} else { 
print '<p style="color: red;">This page has been accessed in error.</p>'; 
} 

mysqli_close($dbc); 
+0

享受起牀,因爲你所有的SQL注入漏洞的黑客攻擊,雖然這之後。 – hanshenrik

回答

3

您使用什麼列名稱來存儲文件路徑?您將需要檢索這是您第一次查詢的一部分:

$query = "SELECT title FROM imagedata WHERE id={$_GET['id']}";

變爲:

$query = "SELECT title,path FROM imagedata WHERE id={$_GET['id']}";

然後你就可以使用unlink()只是數據庫查詢以上:

unlink($row['path']); // if you store full path + filename 
unlink('/path/to/your/uploads/folder/here/' . $row['path']); // if you store just the file name and not folder 
$query = "DELETE FROM imagedata WHERE id={$_POST['id']} LIMIT 1"; 
$r = mysqli_query($dbc, $query); 
+0

phpadmin中的我的列是ID,PATH和TITLE。 – logan26

+0

完美,在'PATH'中有一個例子:'filename.jpg'或者像:'/ folder/here/filename.jpg'?使用'path'列名查看上面的更新。 –

+1

它會說「PATH - logo.png」 - 感謝您的幫助! – logan26

1

如果你有文件的名字,你可以嘗試類似

unlink($file); 

你已經從你的數據庫

刪除它,然後打印出已被刪除的消息