Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

PHP/MySQL - como gerar automaticamente o link de exclusão para uma linha em uma tabela já gerada automaticamente?


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

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

então em "deletepage.php", o que quer que você vá chamar essa página faça algo como
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();

Não sei qual driver você está usando aqui, mas a solução preferida seria usar uma instrução preparada com uma consulta parametrizada.

Praticamente você envia o id através de um GET parâmetro para sua "página de exclusão". Essa página pega esse valor, lança-o para um int para evitar injeções de SQL (leia mais abaixo) e, em seguida, exclui os dados. Você também pode, em vez de ecoar um sucesso, usar um header para redirecioná-los para a página anterior. Você pode anexar um GET parâmetro para esse URL exibe uma mensagem de sucesso. (ou você pode sempre fazer tudo isso na mesma página e apenas verificar se o id está sendo enviado).

Além disso, você deve ter esta página por trás do sistema de login seguro de alguém. Você não quer nenhum usuário/bot capaz de executar esse deletepage.php .

Como posso evitar injeção de SQL em 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

Eu estou supondo que você está usando mysqli então dê uma olhada neste documento para instruções preparadas com esse driver, http ://php.net/manual/en/mysqli.quickstart.prepared-statements.php .