Mysql
 sql >> Baza danych >  >> RDS >> Mysql

PHP/MySQL - jak automatycznie wygenerować link do usunięcia wiersza w już wygenerowanej automatycznie tabeli?

Zmień to

<a href='#'><span class='delete'>

do

<a href='deletepage.php?id=" . $row["ID"] . "'><span class='delete'>

następnie na "deletepage.php", jakkolwiek nazwiesz tę stronę, zrób coś takiego

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();

Nie wiem, jakiego sterownika tutaj używasz, ale preferowanym rozwiązaniem byłoby użycie przygotowanej instrukcji ze sparametryzowaną kwerendą.

Więc prawie wysyłasz id przez GET parametr do "usuń stronę". Ta strona przyjmuje tę wartość, rzutuje ją na int aby uniknąć wstrzyknięć SQL (czytaj dalej poniżej), a następnie usuwa dane. Możesz również zamiast powtarzać sukces, użyć header aby przekierować ich na poprzednią stronę. Możesz dołączyć GET parametr do tego adresu URL wyświetla komunikat o powodzeniu. (lub zawsze możesz zrobić to wszystko na tej samej stronie i po prostu sprawdzić, czy id jest wysyłany).

Powinieneś także mieć tę stronę za bezpiecznym systemem logowania. Nie chcesz, aby żaden użytkownik/bot mógł wykonać ten deletepage.php .

Jak mogę zapobiec wstrzykiwaniu SQL w 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

Zgaduję, że używasz mysqli więc spójrz na ten dokument, aby znaleźć przygotowane oświadczenia z tym sterownikiem, http ://php.net/manual/en/mysqli.quickstart.prepared-statements.php .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql wybierz ostatni wiersz dla każdej grupy

  2. BŁĄD 1452 (23000):Nie można dodać lub zaktualizować wiersza podrzędnego:ograniczenie klucza obcego nie powiodło się

  3. GDZIE dataczas starszy niż jakiś czas (np. 15 minut)

  4. #1115 – Nieznany zestaw znaków:„utf8mb4”

  5. Mapowanie Doctrine 2 odwołujące się do unikalnego klucza