Thay đổi điều này
<a href='#'><span class='delete'>
đến
<a href='deletepage.php?id=" . $row["ID"] . "'><span class='delete'>
sau đó trên "deletepage.php", bất cứ điều gì bạn định gọi là trang đó, hãy làm điều gì đó giống như
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();
Tôi không biết bạn đang sử dụng trình điều khiển nào ở đây nhưng giải pháp ưu tiên sẽ là sử dụng một câu lệnh được chuẩn bị sẵn với một truy vấn được tham số hóa.
Rất nhiều bạn gửi id
thông qua GET
tham số "xóa trang" của bạn. Trang đó nhận giá trị đó, chuyển nó thành int
để tránh việc đưa vào SQL (đọc thêm bên dưới), và sau đó xóa dữ liệu. Bạn cũng có thể thay vì lặp lại thành công ở đó, hãy sử dụng header
để chuyển hướng họ đến trang trước. Bạn có thể thêm một GET
tham số url đó hiển thị một thông báo thành công. (hoặc bạn luôn có thể thực hiện tất cả việc này trên cùng một trang và chỉ cần kiểm tra xem id
đang được gửi).
Ngoài ra, bạn nên có trang này đằng sau hệ thống đăng nhập an toàn của ai đó. Bạn không muốn bất kỳ người dùng / bot nào có thể thực thi deletepage.php
đó .
Làm cách nào để ngăn chặn việc đưa SQL vào 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
Tôi đoán bạn đang sử dụng mysqli
vì vậy hãy xem tài liệu này để biết các câu lệnh đã chuẩn bị sẵn với trình điều khiển đó, http ://php.net/manual/en/mysqli.quickstart.prepared-statements.php
.