Zmień to
<a href='#'><span class='delete'>
do
<a href='deletepage.php?id=" . $row["ID"] . "'><span class='delete'>
następnie na "deletepage.php", jakkolwiek nazwiesz tę stronę, zrób coś takiego
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();
Nie wiem, jakiego sterownika tutaj używasz, ale preferowanym rozwiązaniem byłoby użycie przygotowanej instrukcji ze sparametryzowaną kwerendą.
Więc prawie wysyłasz id przez GET parametr do "usuń stronę". Ta strona przyjmuje tę wartość, rzutuje ją na int aby uniknąć wstrzyknięć SQL (czytaj dalej poniżej), a następnie usuwa dane. Możesz również zamiast powtarzać sukces, użyć header aby przekierować ich na poprzednią stronę. Możesz dołączyć GET parametr do tego adresu URL wyświetla komunikat o powodzeniu. (lub zawsze możesz zrobić to wszystko na tej samej stronie i po prostu sprawdzić, czy id jest wysyłany).
Powinieneś także mieć tę stronę za bezpiecznym systemem logowania. Nie chcesz, aby żaden użytkownik/bot mógł wykonać ten deletepage.php .
Jak mogę zapobiec wstrzykiwaniu SQL w PHP?
https://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
Zgaduję, że używasz mysqli więc spójrz na ten dokument, aby znaleźć przygotowane oświadczenia z tym sterownikiem, http ://php.net/manual/en/mysqli.quickstart.prepared-statements.php
.