2017-06-21 3 views
0

Ich versuche, den ausgewählten Datensatz gelöscht.Löschen ausgewählten Datensatz in PHP

Hier ist mein Code:

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; 
} 

Aber wenn ich Verwijderen klicken löschen alle Daten aus der MySQL-Tabelle löscht und es zeigt mehrere Male 'Account succesvol verwijderd'(Erfolgreich das Konto gelöscht) Aber ich will, dass es nur die löscht ein, wo Sie Verwijderen

+1

Erfahren Sie mehr über vorbereitete Anweisungen SQL-Injection – Jens

+0

Ausdruck die Erklärung zu verhindern und sehen, was – Jens

+0

erzeugt wird 'if (isset ($ _ POST [‚AccountDelete‘])' wird wahr oder falsch sein entweder ** alle ** Iterationen der Schleife, die zum Löschen von allem führt Sie müssen eine Möglichkeit finden, welche Konto-ID Sie löschen müssen – apokryfos

Antwort

0

Sie versuchen, indem Sie die ID auf die Formulare können löschen klicken, um die versteckten IDs überprüfen, und die die POST in der Abfrage

    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

Danke, das hat funktioniert –

0

1) Sie erlauben nicht, dass die Seite beim Zurücksetzen das Konto angibt, das gelöscht werden soll. Sie benötigen ein verstecktes Feld innerhalb des Formulars "Löschen", das die Konto-ID enthält. Dann greifen Sie über das $ _POST-Array darauf zu und verwenden es in Ihrer Abfrage (die übrigens dringend parametrisiert werden sollte, um Sie besser vor SQL-Injection-Angriffen zu schützen).

2) Dieser Code befindet sich eindeutig in einer Art Schleife. Daher wird Ihre DELETE-Anweisung jedes Mal ausgeführt, wenn die Schleife wiederholt wird, was vermutlich einmal für jedes Konto in Ihrer Datenbank der Fall ist. Der Code, der den HTML-Code (die Schleife) und den Code, der Postbacks behandelt, enthält, sollte sich in separaten Abschnitten des Skripts befinden. Sie sollen in getrennten Prozessen ausgeführt werden (anfängliche Anforderung zum Rendern von HTML, dann Postback-Anforderung, um mit der Formularübergabe fertig zu werden) und sollten unbedingt zusammen nicht werden. In diesem Fall hat dies zu einem völlig vermeidbaren logischen Fehler geführt. In einigen MVC- oder API-orientierten Websitedesigns können die beiden Codebits sogar in separaten Skripts enthalten sein.

Verwandte Themen