sql >> Database teknologi >  >> RDS >> Mysql

PHP/MySQL - hvordan genererer man automatisk slettelink til en række i en allerede automatisk genereret tabel?

Skift dette

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

til

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

derefter på "deletepage.php", hvad end du vil kalde den side, gør noget lignende

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

Jeg ved ikke, hvilken driver du bruger her, men den foretrukne løsning ville være at bruge en forberedt sætning med en parametriseret forespørgsel.

Så stort set sender du id via en GET parameter til din "slet side". Denne side tager den værdi, kaster den til en int for at undgå SQL-injektioner (læs videre nedenfor), og sletter derefter dataene. Du kan også bruge en header i stedet for at ekko en succes der for at omdirigere dem til den forrige side. Du kan tilføje en GET parameter til denne url viser en succesmeddelelse. (eller du kan altid gøre alt dette på samme side og bare tjekke om id bliver sendt).

Du bør også have denne side bag et sikkert login-system. Du ønsker ikke, at nogen bruger/bot kan udføre den deletepage.php .

Hvordan kan jeg forhindre SQL-injektion i 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

Jeg gætter på, at du bruger mysqli så tag et kig på dette dokument for forberedte erklæringer med den driver, http ://php.net/manual/en/mysqli.quickstart.prepared-statements.php .




  1. Rekursiv MySQL-forespørgsel?

  2. Sådan tjekker du datoformatet for din Oracle-session

  3. Kan jeg paginere en brugerdefineret forespørgsel uden at tilsidesætte standardpagineringen?

  4. Sådan konfigureres en PDO-forbindelse korrekt