これを変更する
<a href='#'><span class='delete'>
<a href='deletepage.php?id=" . $row["ID"] . "'><span class='delete'>
次に、「deletepage.php」で、そのページと呼ぶものは何でも次のようにします
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();
ここで使用しているドライバーはわかりませんが、パラメーター化されたクエリでプリペアドステートメントを使用することをお勧めします。
ほとんどの場合、id
を送信します GET
経由 「ページの削除」へのパラメータ。そのページはその値を受け取り、それをint
にキャストします SQLインジェクションを回避するため(以下でさらに読む)、データを削除します。成功をエコーする代わりに、header
を使用することもできます。 それらを前のページにリダイレクトします。 GET
を追加できます そのURLのパラメータは、成功メッセージを表示します。 (または、これらすべてを常に同じページで実行して、id
かどうかを確認することもできます。 送信中です。
また、このページは誰かの安全なログインシステムの背後にある必要があります。そのdeletepage.php
を実行できるユーザー/ボットは必要ありません。 。
PHPでSQLインジェクションを防ぐにはどうすればよいですか?
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
mysqli
を使用していると思います したがって、そのドライバを使用したプリペアドステートメントについては、このドキュメントを参照してください。 http ://php.net/manual/en/mysqli.quickstart.prepared-statements.php
。