在PHP中删除所选记录
我正在尝试删除所选记录 这是我的密码:在PHP中删除所选记录,php,mysql,Php,Mysql,我正在尝试删除所选记录 这是我的密码: echo '<td>'; echo $sqlUitlezenAccountsRank.'<br>'; echo '</td>'; echo '<td>'; echo '<form method="post"> <input name="AccountEdit" value ="Bewerken" type="submit"> </form>'.'<br>
echo '<td>';
echo $sqlUitlezenAccountsRank.'<br>';
echo '</td>';
echo '<td>';
echo '<form method="post">
<input name="AccountEdit" value ="Bewerken" type="submit">
</form>'.'<br>';
echo '</td>';
echo '<td>';
echo '<form method="post">
<input name="AccountDelete" value ="Verwijderen" type="submit">
</form>'.'<br>';
echo '</td>';
echo '</tr>';
if (isset($_POST['AccountDelete'])) {
$DeleteAccount = "DELETE FROM StaffLeden WHERE GebruikersID=".$sqlUitlezenAccountsEach['GebruikersID'];
if ($conn->query($DeleteAccount) === TRUE) {
echo "Account succesvol verwijderd";
} else {
echo "Fout bij het verwijderen van het account: " . $conn->error;
}
echo';
echo$sqluitlezenacountsrank.“
”;
回声';
回声';
回声'
“
”;
回声';
回声';
回声'
“
”;
回声';
回声';
如果(isset($_POST['AccountDelete'])){
$deleteCount=“从statffleden删除,其中GebruikersID=“.sqluitlezenacountseach['GebruikersID'”;
如果($conn->query($deleteCount)==TRUE){
echo“帐户成功”vol verwijderd;
}否则{
echo“Fout bij het verwijderen van het账户:”.$conn->错误;
}
但是,如果我单击delete
Verwijderen
,它将删除mysql表中的所有数据,并多次显示“Account Successvol verwijderd”(成功删除该帐户)但我希望它只删除您单击deleteVerwijderen
的一个,您可以尝试将id添加到表单中,检查隐藏id,并在查询中添加帖子
echo '<td>';
echo $sqlUitlezenAccountsRank.'<br>';
echo '</td>';
echo '<td>';
echo '
<form method="post">
<input name="GebruikersID" value ="'.$sqlUitlezenAccountsEach['GebruikersID'].'" type="hidden">
<input name="AccountEdit" value ="Bewerken" type="submit">
</form>
'.'<br>';
echo '</td>';
echo '<td>';
echo '
<form method="post">
<input name="GebruikersID" value ="'.$sqlUitlezenAccountsEach['GebruikersID'].'" type="hidden">
<input name="AccountDelete" value ="Verwijderen" type="submit">
</form>
'.'<br>';
echo '</td>';
echo '</tr>';
if (isset($_POST['AccountDelete'])) {
$DeleteAccount = "DELETE FROM StaffLeden WHERE GebruikersID=".$_POST['GebruikersID'];
if ($conn->query($DeleteAccount) === TRUE) {
echo "Account succesvol verwijderd";
} else {
echo "Fout bij het verwijderen van het account: " . $conn->error;
}
}
}
echo';
echo$sqluitlezenacountsrank.“
”;
回声';
回声';
回声'
“
”;
回声';
回声';
回声'
“
”;
回声';
回声';
如果(isset($_POST['AccountDelete'])){
$deleteCount=“从statffleden删除,其中GebruikersID=“.$\u POST['GebruikersID'”;
如果($conn->query($deleteCount)==TRUE){
echo“帐户成功”vol verwijderd;
}否则{
echo“Fout bij het verwijderen van het账户:”.$conn->错误;
}
}
}
1)回传时,您不允许页面指定要删除的帐户。您需要在保存帐户ID的“delete”表单中有一个隐藏字段。然后您可以通过$\u POST数组访问该字段,并在查询中使用它(顺便说一句,应该立即对其进行参数化,以更好地保护您免受SQL注入攻击)
2) 很明显,这段代码在某种循环中。因此,每次循环迭代时,您的DELETE语句都将运行一次,这对于数据库中的每个帐户可能都是一次。呈现HTML(循环)的代码和处理回发的代码应该在脚本的不同部分中。它们旨在在单独的过程中执行(最初请求呈现HTML,然后是回发请求以处理表单提交),并且应该绝对而不是集中在一起。在这种情况下,它导致了完全可以避免的逻辑错误。在一些更面向MVC或API的网站设计中,这两位代码甚至可能完全在单独的脚本中。了解防止SQL注入的准备语句打印出该语句,并查看生成的内容
if(isset($\u POST['AccountDelete'])
在导致删除所有内容的循环的所有迭代中都将是true或false。您需要一种方法来找到需要删除的帐户id。我该怎么做?PHP和SQL是不同的语言。MySQL甚至看不到您的PHP代码。实际的SQL代码算什么,在这种情况下存储在$deleteCount
变数。