2017-06-21 98 views
0

我想刪除所選記錄。刪除PHP中的選定記錄

這裏是我的代碼:

echo '<td>'; 
echo $sqlUitlezenAccountsRank.'<br>'; 
echo '</td>'; 
echo '<td>'; 
echo '<form method="post"> 
    <input name="AccountEdit" value ="Bewerken" type="submit"> 
</form>'.'<br>'; 
echo '</td>'; 
echo '<td>'; 
echo '<form method="post"> 
<input name="AccountDelete" value ="Verwijderen" type="submit"> 
</form>'.'<br>'; 
echo '</td>'; 
echo '</tr>'; 

if (isset($_POST['AccountDelete'])) { 
    $DeleteAccount = "DELETE FROM StaffLeden WHERE GebruikersID=".$sqlUitlezenAccountsEach['GebruikersID']; 

if ($conn->query($DeleteAccount) === TRUE) { 
    echo "Account succesvol verwijderd"; 
} else { 
    echo "Fout bij het verwijderen van het account: " . $conn->error; 
} 

但如果我點擊刪除Verwijderen它刪除從mysql表中的所有數據,它顯示了多次'Account succesvol verwijderd'(刪除成功帳戶)但我想這只是刪除一個,你點擊查詢刪除Verwijderen

+1

瞭解準備好的語句以防止SQL注入 – Jens

+0

打印出語句並查看生成的內容 – Jens

+0

if(isset($ _ POST ['AccountDelete'])'在** all **迭代中將爲true或false您需要一種方法來找到您需要刪除的帳戶ID – apokryfos

回答

0

您可以通過添加ID的形式嘗試,檢查隱藏的IDS,以及在POST

    echo '<td>'; 
          echo $sqlUitlezenAccountsRank.'<br>'; 
          echo '</td>'; 
          echo '<td>'; 
          echo ' 
          <form method="post"> 
           <input name="GebruikersID" value ="'.$sqlUitlezenAccountsEach['GebruikersID'].'" type="hidden"> 
           <input name="AccountEdit" value ="Bewerken" type="submit"> 
          </form> 
          '.'<br>'; 
          echo '</td>'; 
          echo '<td>'; 
          echo ' 
          <form method="post"> 
           <input name="GebruikersID" value ="'.$sqlUitlezenAccountsEach['GebruikersID'].'" type="hidden"> 
           <input name="AccountDelete" value ="Verwijderen" type="submit"> 
          </form> 
          '.'<br>'; 
          echo '</td>'; 
          echo '</tr>'; 

          if (isset($_POST['AccountDelete'])) { 
           $DeleteAccount = "DELETE FROM StaffLeden WHERE GebruikersID=".$_POST['GebruikersID']; 

           if ($conn->query($DeleteAccount) === TRUE) { 
            echo "Account succesvol verwijderd"; 
           } else { 
            echo "Fout bij het verwijderen van het account: " . $conn->error; 
           } 
          } 
         } 
+0

謝謝,這工作 –

0

1)您不允許該頁面在發回時指定要刪除的帳戶。您需要隱藏字段在「刪除」表格中,該表格包含賬戶ID。然後你通過$ _POST數組訪問這個數組,並在你的查詢中使用它(其中,應該緊急地參數化以更好地保護你免受SQL注入攻擊)。

2)很明顯,這段代碼在某種循環內部。因此,每次循環迭代時,DELETE語句都會運行一次,這大概是針對數據庫中每個帳戶的一次。呈現HTML(循環)的代碼和處理回發的代碼應該位於腳本的單獨部分中。它們的目的是在不同的進程中執行(初始請求呈現HTML,然後回發請求來處理表單提交),並且應該將而不是集中在一起。在這種情況下,它導致了完全可避免的邏輯錯誤。在一些更多的面向MVC或API的網站設計中,這兩個代碼甚至可能完全在單獨的腳本中。