Změňte toto
<a href='#'><span class='delete'>
do
<a href='deletepage.php?id=" . $row["ID"] . "'><span class='delete'>
pak na "deletepage.php", ať už tu stránku nazvete jakkoli, udělejte něco jako
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();
Nevím, jaký ovladač zde používáte, ale preferovaným řešením by bylo použití připraveného příkazu s parametrizovaným dotazem.
Takže v podstatě pošlete id
prostřednictvím GET
parametr na vaši "smazat stránku". Stránka převezme tuto hodnotu a přenese ji do int
abyste se vyhnuli injekcím SQL (čtěte dále níže), a poté data odstraní. Místo opakování úspěchu byste také mohli použít header
přesměrovat je na předchozí stránku. Můžete připojit GET
parametr k této adrese URL zobrazí zprávu o úspěchu. (nebo to všechno můžete udělat vždy na stejné stránce a jen zkontrolovat, zda id
se odesílá).
Také byste měli mít tuto stránku za někým bezpečným přihlašovacím systémem. Nechcete, aby žádný uživatel/bot mohl spustit tento deletepage.php
.
Jak mohu zabránit vkládání SQL v 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
Hádám, že používáte mysqli
takže se podívejte do tohoto dokumentu, kde najdete připravená prohlášení s tímto ovladačem, http ://php.net/manual/en/mysqli.quickstart.prepared-statements.php
.