Mysql
 sql >> Base de données >  >> RDS >> Mysql

PHP/MySQL - comment générer automatiquement un lien de suppression pour une ligne dans une table déjà générée automatiquement ?

Changez ceci

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

à

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

puis sur "deletepage.php", quel que soit le nom que vous donnerez à cette page, faites quelque chose comme

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

Je ne sais pas quel pilote vous utilisez ici, mais la solution préférée consisterait à utiliser une instruction préparée avec une requête paramétrée.

Donc, à peu près, vous envoyez le id via un GET paramètre à votre "page de suppression". Cette page prend cette valeur, la convertit en un int pour éviter les injections SQL (lire plus bas), puis supprime les données. Vous pouvez également au lieu de faire écho à un succès, utilisez un header pour les rediriger vers la page précédente. Vous pouvez ajouter un GET paramètre à cette URL affiche un message de réussite. (ou vous pouvez toujours faire tout cela sur la même page et simplement vérifier si le id est en cours d'envoi).

Vous devriez également avoir cette page derrière le système de connexion sécurisé de quelqu'un. Vous ne voulez pas qu'un utilisateur/bot puisse exécuter ce deletepage.php .

Comment puis-je empêcher l'injection SQL en 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

Je suppose que vous utilisez mysqli alors jetez un oeil à ce document pour les déclarations préparées avec ce pilote, http ://php.net/manual/en/mysqli.quickstart.prepared-statements.php .