我正在尝试删除所选记录。
这是我的代码:
{ 'name':'foo3','id':'3',children:[] },
但是,如果我点击删除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;
}
,它会删除mysql表中的所有数据,并且会多次显示Verwijderen
(成功删除帐户)但我只想要它删除您单击删除'Account succesvol verwijderd'
答案 0 :(得分:0)
您可以尝试将ID添加到表单,检查隐藏的ID以及查询中的POST
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;
}
}
}
答案 1 :(得分:0)
1)在回发时,您不允许该页面指定要删除的帐户。您需要一个包含帐户ID的“删除”表单中的隐藏字段。然后你通过$ _POST数组访问它并在你的查询中使用它(顺便说一下,应该紧急参数化以更好地保护你免受SQL注入攻击)。
2)显然这段代码在某种循环中。因此,每次循环迭代时,DELETE语句将运行一次,对于数据库中的每个帐户,这可能是一次。呈现HTML(循环)的代码和处理回发的代码应该位于脚本的不同部分。它们旨在在单独的进程中执行(初始请求呈现HTML,然后回发请求以处理表单提交)并且绝对应该不集中在一起。在这种情况下,它导致完全可避免的逻辑错误。在一些更多面向MVC或API的站点设计中,两位代码甚至可能完全在单独的脚本中。