Ändern Sie dies
<a href='#'><span class='delete'>
zu
<a href='deletepage.php?id=" . $row["ID"] . "'><span class='delete'>
dann auf "deletepage.php", wie auch immer Sie diese Seite nennen werden, tun Sie so etwas wie
require_once('dbconnect.php');
$id = (int)$_GET['id'];
$sql = "DELETE FROM Predictions WHERE id=" . $id;
if($conn->query($sql) === TRUE) {
echo "Item deleted successfully";
} else {
echo "Error deleting record; ". $conn->error;
}
$conn->close();
Ich weiß nicht, welchen Treiber Sie hier verwenden, aber die bevorzugte Lösung wäre die Verwendung einer vorbereiteten Anweisung mit einer parametrisierten Abfrage.
Sie senden also so ziemlich die id
über ein GET
Parameter zu Ihrer "Löschseite". Diese Seite nimmt diesen Wert und wandelt ihn in einen int
um um SQL-Injections zu vermeiden (lesen Sie weiter unten) und löscht dann die Daten. Anstatt einen Erfolg zurückzugeben, könnten Sie auch einen header
verwenden um sie auf die vorherige Seite umzuleiten. Sie könnten ein GET
anhängen Parameter zu dieser URL zeigt eine Erfolgsmeldung an. (oder Sie könnten all dies immer auf derselben Seite tun und einfach prüfen, ob die id
wird gesendet).
Außerdem sollten Sie diese Seite hinter einem sicheren Anmeldesystem haben. Sie möchten nicht, dass ein Benutzer/Bot diese deletepage.php
ausführen kann .
Wie kann ich die SQL-Injection in PHP verhindern?
http://php.net/manual/en /security.database.sql-injection.php
https://www.owasp.org /index.php/SQL_Injection_Prevention_Cheat_Sheet#Defense_Option_1:_Prepared_Statements_.28Parameterized_Queries.29
Ich vermute, Sie verwenden mysqli
Schauen Sie sich also dieses Dokument für vorbereitete Anweisungen mit diesem Treiber an, http ://php.net/manual/en/mysqli.quickstart.prepared-statements.php
.