整个数据库删除而不是一行

时间:2017-11-27 02:30:11

标签: javascript php jquery mysql ajax

我一直试图在删除按钮的onclick上删除mySQL数据库中的一行。但是,不是删除了一个mySQL行,而是删除了数据库中的所有行。

我只针对特定ID,因此我不清楚为什么所有其他ID都会被删除。

HTML:

<?php foreach ($movies as $movie) : ?>
    <div class="col-4">
        <div class="card card-cascade">
            <div class="view gradient-card-header purple-gradient">
                <h2><?php echo $movie['name']; ?></h2>
                <p><?php echo $movie['genre']; ?></p>
            </div>
            <div class="card-body text-center">

                    <!-- Delete -->
                    <a type="button" class="btn-floating btn-small btn-dribbble delbutton" data-toggle="tooltip" data-placement="top" title="Delete" id="<?php echo $movie['id']; ?>"><i class="fa fa-trash-o" aria-hidden="true"></i></a>

            </div>
        </div>
    </div>
    <?php endforeach; ?>

JS:

$(function () {
  // Tooltips Initialization
  $('[data-toggle="tooltip"]').tooltip();

  // Delete Movie
  $(".delbutton").click(function() {
        console.log('watch me')
        var del_id = $(this).attr("id");
        var info = 'id=' + del_id;
        if (confirm("Sure you want to delete this post? This cannot be undone later.")) {
            $.ajax({
                type : "POST",
                url : "../movieApp/delete.php", //URL to the delete php script
                data : {id:info},
                success : function() {
                    console.log("success");
                    },
                error: function () {
                    console.log("failed");
                },
                });
            $(this).parents(".record").animate("fast").animate({
                opacity : "hide"
            }, "slow");
        }
        return false;
    });
});

PHP:

require 'config/config.php';
require 'config/db.php';

if($_POST['id']){
    $id=$_POST['id'];

    $delete = "DELETE FROM movies WHERE id=$id";
    $result = $conn->query($delete);
}

if (mysqli_query($conn, $sql)) {
mysqli_free_result($result);
mysqli_close($conn);
echo "Worked!";
exit;
} else {
    echo "Error deleting record";
}

1 个答案:

答案 0 :(得分:0)

在HTML中使用data-id="<?php echo $movie['id']; ?>"标记。然后在你的JS中你可以像这样选择值:var del_id = $(this).data("id");。我还会检查浏览器中的元素,看看你是否真的在你的PHP脚本中发送了一个“id”。如果您可能那么您可能希望在PHP脚本中启用错误调试,如下所示:error_reporting(E_ALL); ini_set('display_errors', 1);。将SQL语句更改为以下内容也不会有什么坏处:$delete = "DELETE FROM movies WHERE id='" . $id . "'";。祝你好运这听起来不太难。