Skift dette
<a href='#'><span class='delete'>
til
<a href='deletepage.php?id=" . $row["ID"] . "'><span class='delete'>
derefter på "deletepage.php", hvad end du vil kalde den side, gør noget lignende
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();
Jeg ved ikke, hvilken driver du bruger her, men den foretrukne løsning ville være at bruge en forberedt sætning med en parametriseret forespørgsel.
Så stort set sender du id
via en GET
parameter til din "slet side". Denne side tager den værdi, kaster den til en int
for at undgå SQL-injektioner (læs videre nedenfor), og sletter derefter dataene. Du kan også bruge en header
i stedet for at ekko en succes der for at omdirigere dem til den forrige side. Du kan tilføje en GET
parameter til denne url viser en succesmeddelelse. (eller du kan altid gøre alt dette på samme side og bare tjekke om id
bliver sendt).
Du bør også have denne side bag et sikkert login-system. Du ønsker ikke, at nogen bruger/bot kan udføre den deletepage.php
.
Hvordan kan jeg forhindre SQL-injektion i PHP?
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
Jeg gætter på, at du bruger mysqli
så tag et kig på dette dokument for forberedte erklæringer med den driver, http ://php.net/manual/en/mysqli.quickstart.prepared-statements.php
.