Cambiar esto
<a href='#'><span class='delete'>
a
<a href='deletepage.php?id=" . $row["ID"] . "'><span class='delete'>
luego en "deletepage.php", como sea que vayas a llamar a esa página, haz algo como
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();
No sé qué controlador está usando aquí, pero la solución preferida sería usar una declaración preparada con una consulta parametrizada.
Así que básicamente envías el id
a través de un GET
parámetro a su "página de eliminación". Esa página toma ese valor, lo convierte en un int
para evitar inyecciones de SQL (lea más abajo) y luego elimina los datos. También podría, en lugar de hacer eco de un éxito allí, usar un header
para redirigirlos a la página anterior. Podría agregar un GET
parámetro a esa URL muestra un mensaje de éxito. (o siempre puede hacer todo esto en la misma página y simplemente verificar si el id
se está enviando).
También debe tener esta página detrás de un sistema de inicio de sesión seguro. No desea que ningún usuario/bot pueda ejecutar ese deletepage.php
.
¿Cómo puedo evitar la inyección de SQL en 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
Supongo que estás usando mysqli
así que eche un vistazo a este documento para obtener declaraciones preparadas con ese controlador, http ://php.net/manual/en/mysqli.quickstart.prepared-statements.php
.