Ändra detta
<a href='#'><span class='delete'>
till
<a href='deletepage.php?id=" . $row["ID"] . "'><span class='delete'>
sedan på "deletepage.php", vad du än ska kalla den sidan gör något liknande
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();
Jag vet inte vilken drivrutin du använder här men den föredragna lösningen skulle vara att använda en förberedd sats med en parametriserad fråga.
Så i stort sett skickar du id
via en GET
parametern till din "radera sida". Den sidan tar det värdet, castar det till en int
för att undvika SQL-injektioner (läs vidare nedan), och raderar sedan data. Du kan också istället för att upprepa en framgång där använda en header
för att omdirigera dem till föregående sida. Du kan lägga till en GET
parameter till den webbadressen visar ett framgångsrikt meddelande. (eller så kan du alltid göra allt detta på samma sida och bara kontrollera om id
skickas).
Du bör också ha den här sidan bakom ett säkert inloggningssystem. Du vill inte att någon användare/bot ska kunna köra den deletepage.php
.
Hur kan jag förhindra 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
Jag antar att du använder mysqli
så ta en titt på det här dokumentet för förberedda uttalanden med den drivrutinen, http ://php.net/manual/en/mysqli.quickstart.prepared-statements.php
.