2011-08-31 72 views
0

我想知道如何才能將此添加條目鏈接轉到刪除條目鏈接?任何幫助,將不勝感激。如何將此代碼轉換爲sql刪除函數?

if (CAN_EDIT){ 
    echo '<i>'.$announcements[$x]['page_edit']='<a href="index.php?id='.$announcements[$x]['page_id'].'&act=edit">edit entry</a></i><br />'; 
if ($announcements[$x]['page_edit']>0){} 
         } 

我瞭解使用

mysql_query DELETE FROM (table name) WHERE (item name) 

我只是不知道如何實現它,並使它成爲一個鏈接。

+1

''''''''''''''page_id']。''''mysql_query從(表格)刪除WHERE id = $ _GET ['id']' – JKirchartz

+0

''。 $ announcements [$ x] ['page_edit'] =''。$ announcements [$ x] ['page_edit']。' bfavaretto

回答

2

這真的取決於您的應用程序如何處理請求。您發佈的編輯鏈接代碼顯示兩個參數正在傳遞給PHP:idact。當鏈接被點擊時,這兩個都將在PHP中用$_GET提供。

由此我們可以推斷出您的代碼正在檢查$_GET['act']以決定要做什麼。如果它等於'edit',您可能會從數據庫中獲取一些數據(對於id等於$_GET['id']的記錄),然後渲染編輯表單。

使用相同的邏輯,您應該創建一個與id=N&act=delete(其中N是一個實際的ID)的鏈接。然後在PHP中檢查$_GET['act']的值是否爲'delete',然後運行SQL查詢以刪除傳入ID的行。

此外,請務必對SQL注入做一點研究 - 您不應該直接在查詢中使用$_GET$_POST值,因爲這會使您的應用程序容易受到注入攻擊。看看PHP手冊中的mysql_real_escape_string函數。

+2

不要低估這個答案中最後一段的重要性,特別是在使用公共可讀的'$ _GET'參數時!牢記這一點,閱讀JKirchartz對你的問題的評論,並立即忘掉它。非常糟糕的建議遲早會讓你陷入麻煩。在查詢中使用之前始終清理用戶輸入。 –

+0

+1 @Remco。該解決方案很好,直到你遇到id「; DROP ALL TABLES」,此時你遇到了問題。 – PaulStock

+0

只有少數人有權刪除條目。除非他們登錄到系統,否則他們將無法做到這一點。 – Nicole