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?
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
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
.