sql >> Databasteknik >  >> RDS >> Mysql

PHP/MySQL - hur genererar man automatiskt borttagningslänk för en rad i en redan automatiskt genererad tabell?

Ändra detta

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

till

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

sedan på "deletepage.php", vad du än ska kalla den sidan gör något liknande

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

Jag vet inte vilken drivrutin du använder här men den föredragna lösningen skulle vara att använda en förberedd sats med en parametriserad fråga.

Så i stort sett skickar du id via en GET parametern till din "radera sida". Den sidan tar det värdet, castar det till en int för att undvika SQL-injektioner (läs vidare nedan), och raderar sedan data. Du kan också istället för att upprepa en framgång där använda en header för att omdirigera dem till föregående sida. Du kan lägga till en GET parameter till den webbadressen visar ett framgångsrikt meddelande. (eller så kan du alltid göra allt detta på samma sida och bara kontrollera om id skickas).

Du bör också ha den här sidan bakom ett säkert inloggningssystem. Du vill inte att någon användare/bot ska kunna köra den deletepage.php .

Hur kan jag förhindra 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

Jag antar att du använder mysqli så ta en titt på det här dokumentet för förberedda uttalanden med den drivrutinen, http ://php.net/manual/en/mysqli.quickstart.prepared-statements.php .




  1. hur skickar man ett tabellnamn som parameter till lagrad procedur?

  2. Inget databasvalt fel i PHP med MySQLi

  3. django.core.exceptions.ImproperlyConfigured:Fel vid laddning av MySQLdb-modul:Ingen modul med namnet MySQLdb

  4. Hur STRCMP() fungerar i MariaDB