【问题标题】:Deleting record from database with button in PHP使用PHP中的按钮从数据库中删除记录
【发布时间】:2019-06-24 10:45:14
【问题描述】:

我必须使用按钮从数据库中删除一条记录,但我的删除查询不起作用。使用插入查询将记录成功输入数据库。我按照“kanpurwebD”在 YouTube “如何使用 PHP 和 MySQL 从数据库中删除记录”上提供的 php 代码的确切教程进行操作。教程中的代码工作正常,但我的代码仍然没有删除记录。 (我在数据库中输入了 2 条记录)。 我的代码如下:

<div class="container">

<div class="row">
    <form action='add_record.php' method='get'><button type='submit' name='id' value='submit' class='btn btn-default'>ADD RECORD</button><br />
    </form>
    <table class="table table-hover table-responsive">
        <thead>
            <tr>
                <th>Topic #</th>
                <th>Name</th>
                <th>Admin ID</th>
                <th>Edit</th>
                <th>Delete</th>
            </tr>
        </thead>

        <tbody>
        <?php
        echo '<br />';
        $query = "SELECT * FROM tb_topic";
        $result = $con->query($query);
        if(isset($_POST['submitDeleteBtn'])){
            $key = $_POST['keyToDelete'];
            $check = "Select * from tb_topic where topic_id = '$key'";
            if(mysqli_num_rows($con, $check)>0){
                $query_delete = mysqli_query($con,"Delete from tb_topic where topic_id = '$key'");
                echo 'record deleted';
            }
        }
        while($query_row = mysqli_fetch_array($result)) {?>

                <tr>
                    <td><?php echo $query_row['topic_id'];?></td>
                    <td><?php echo $query_row['topic_name'];?></td>
                    <td><?php echo $query_row['aid'];?></td>
                    <td><input type = 'checkbox' name = 'keyToDelete' value = "<?php echo $query_row['topic_id'];?>" required></td>
                    <td><input type="submit" name="submitDeleteBtn" class="btn btn-danger"></td>
                </tr>

        <?php }
        ?>

</html>

【问题讨论】:

  • 您没有用于删除项目的表单,只有几个不相关的输入。顺便说一句,如果您一次只允许删除一条记录,则该复选框似乎没有必要。
  • 如果您从教程中获得了上述代码,请停止使用它。此代码SQL injection attacks 开放。您应该使用参数化的prepared statements,而不是像这样直接在查询中使用完全未转义的用户数据。目前,任何人都可以很容易地删除您的tb_topic-table 中的所有行。
  • 没有人关心 kanpurweb ..... 或任何来源。这是你的问题,你告诉我们你尝试了什么?您只是从某处复制粘贴代码并想要一个解决方案。如果你填写那个XYZ教程的评论框会更好
  • 不,我没有复制粘贴代码。这是我自己的代码,只是在教程的帮助下。我尝试使用 href 但它不是首选。我为按钮和删除查询编写了简单的代码,但它也不起作用。

标签: php mysql database button


【解决方案1】:

我通过以下语句解决了它:

if(isset($_GET['delete'])) {
    $page = filter_input(INPUT_GET, 'delete', FILTER_VALIDATE_INT, FILTER_NULL_ON_FAILURE);
    $sql = "DELETE FROM tb_topic WHERE topic_id = $page";
}

$_GET() 没有将 id 作为 int,所以我尝试对其进行类型转换,它对我有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-16
    • 2011-07-12
    相关资源
    最近更新 更多