在PHP中删除所选记录

时间:2017-06-21 11:47:54

标签: php mysql

我正在尝试删除所选记录。

这是我的代码:

 { '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'

的那个

2 个答案:

答案 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的站点设计中,两位代码甚至可能完全在单独的脚本中。