PHP生成表中的删除按钮,从数据库和页面中删除

Posted

技术标签:

【中文标题】PHP生成表中的删除按钮,从数据库和页面中删除【英文标题】:Delete Button in PHP generated table, deleting from database and page 【发布时间】:2016-04-29 07:40:40 【问题描述】:

我试图让这个生成的表上的删除按钮工作(删除数据库记录并从视图中删除行)。该按钮是通过 for 循环中的 echo 语句生成的。

吐出视图的php代码:

<?php
      //Waitlist for Nobel Floorplans
                $sth = $db->prepare("SELECT id, first_name, last_name FROM wlist");
                $sth->execute();

                $results = $sth->fetchAll();

                $wishlistArray[] = null;
                foreach ($results as $result) 
                     echo "<tr><td>".$result['first_name']."</td><td>".$result['last_name']."</td><td><button class=\"delete_class\" id=\"".$result['id']."\" >DELETE</button></td></tr>";
                

?>

这个 PHP 页面的底部,是这个 javascript f(x):

<script>
    $(".delete_class").click(function()
        var del_id = $(this).attr('id');
        $.ajax(
            type:'POST',
            url:'delete_page.php',
            data: delete_id : del_id,
            success: function (data) 
                if (data)  
                    tx.executeSql('DELETE FROM wlist WHERE id = ?', [delete_id], success, error);
                
                else  // DO SOMETHING
                
            
            );
    );
</script>

上述代码的问题在于,没有引用 URL 'delete_page.php',也没有从数据库中删除任何内容。完全调用..

我在包含上述所有代码的 PHP 文件所在的文件夹中有“delete_page.php”。这个文件有这个代码:

<?php
    $id = $_POST['delete_id'];
    $query = "delete from nobel_waitlist where ID = $id";
?>

如果知道如何通过 AJAX 删除该视图中的该行以及删除数据库记录,那也很棒。

【问题讨论】:

请考虑如果我向您的delete_page.php 发送POST 请求并将id 参数设置为值0 OR 1=1 会发生什么 我有点担心这个问题的答案,但在您的成功案例中,tx 是什么? last_name, 可爱的sql injection attack 漏洞。享受您的服务器 pwn3d。 呜呜!! 在这里^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ 【参考方案1】:

另一种方式。我不知道executeSql 功能,这就是为什么我给出了一个简单的alert 框。

<script>
$('.delete_class').click(function()
    var del_id= $('.delete_class').val();
    $.ajax(url:"delete_page.php?delete_id="+del_id,cache:false,success:function(result)
        alert("Data Deleted");
    );
);
</script>

delete_page.php

<?php
$id = $_GET['delete_id'];
$query = "DELETE FROM nobel_waitlist WHERE ID=:id";
$queryResult = $db->prepare($query);
$queryResult->execute(array(':id' => $id));
?>

【讨论】:

我该如何删除它所在的表中的行?

以上是关于PHP生成表中的删除按钮,从数据库和页面中删除的主要内容,如果未能解决你的问题,请参考以下文章

单击行中的切换按钮时,如何从 mysql select 生成的 php 表中发布?

从数据库 Django 向表中添加删除原始按钮

使用复选框从数据库表中删除一行

如何用php删除表中的特定行

vba,如何从列表框中的工作表中删除过滤后的数据

MYSQL触发器在PHP项目中用来做信息备份恢复和清空