Changez ceci
<a href='#'><span class='delete'>
à
<a href='deletepage.php?id=" . $row["ID"] . "'><span class='delete'>
puis sur "deletepage.php", quel que soit le nom que vous donnerez à cette page, faites quelque chose comme
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();
Je ne sais pas quel pilote vous utilisez ici, mais la solution préférée consisterait à utiliser une instruction préparée avec une requête paramétrée.
Donc, à peu près, vous envoyez le id
via un GET
paramètre à votre "page de suppression". Cette page prend cette valeur, la convertit en un int
pour éviter les injections SQL (lire plus bas), puis supprime les données. Vous pouvez également au lieu de faire écho à un succès, utilisez un header
pour les rediriger vers la page précédente. Vous pouvez ajouter un GET
paramètre à cette URL affiche un message de réussite. (ou vous pouvez toujours faire tout cela sur la même page et simplement vérifier si le id
est en cours d'envoi).
Vous devriez également avoir cette page derrière le système de connexion sécurisé de quelqu'un. Vous ne voulez pas qu'un utilisateur/bot puisse exécuter ce deletepage.php
.
Comment puis-je empêcher l'injection 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
Je suppose que vous utilisez mysqli
alors jetez un oeil à ce document pour les déclarations préparées avec ce pilote, http ://php.net/manual/en/mysqli.quickstart.prepared-statements.php
.