JavaScript 使用复选框从 MySQL 数据库中删除多行

Posted

技术标签:

【中文标题】JavaScript 使用复选框从 MySQL 数据库中删除多行【英文标题】:JavaScript delete multiple rows from MySQL db with checkbox 【发布时间】:2018-03-09 12:26:32 【问题描述】:

我一直试图弄清楚如何使用复选框和 javascriptmysql 中删除多条记录。

此时我有一个工作脚本,它只从我的数据库中删除一条记录(最新 id)。

对于每个product,我都有复选框

<input class="checkboxProduct" type="checkbox" name="deleteProduct" value="<?php echo $product['id'];?>">

我有一个按钮和 JS 表单(工作 - 它获取所有需要的 id,我可以显示它们,但不能删除。

<script>
  $(function()
    var e = document.getElementById( "selectAction" );
    $("#btn-action").click(function()
      if(e.options[ e.selectedIndex ].value == "delete")
        var checked = $('.checkboxProduct:checked');
        var id = checked.map(function() 
          return this.value;
        ).get().join(",");
        if (id) 
          checked.closest(".product").remove();
          $.ajax( 
            url: "<?php echo $_SERVER['PHP_SELF']; ?>?deleteProduct=true?action=select&id=" + id,
            type: "get",
            success: function(result)
              alert("You have successfully deleted these products!");
            
          );
        
      
    );
  );
</script>

删除函数:

public function deleteProduct()
  try
    $product_id = $_GET['id'];
    $stmt = $this->conn->prepare("DELETE FROM products WHERE id=('$product_id')");
    $stmt->execute();
  
  catch(PDOException $e)
    echo $e->getMessage();
  

【问题讨论】:

mysite.com/?deleteProduct=true&amp;action=select&amp;id=1%20or%201%3D1%3B%20--%20gonner 应该是&amp;action,而不是?action 【参考方案1】:

您需要使用IN 来匹配列表,而不是=。而且你不能把所有的ID都放在一个字符串中,它们需要是文字列表中的单独项目。

您应该使用参数化语句来防止 SQL 注入。

$product_id = explode(',', $_GET['id']);
// Create a set of ?, ?, ?, ... placeholders the same length as the product ID array
$placeholders = implode(', ', array_fill(0, count($product_id), '?'));
$stmt = $this->conn->prepare("DELETE FROM products WHERE id IN ($placeholders)");
$stmt->execute($product_id);

【讨论】:

谢谢,这真的很好用。将接受答案,什么时候可以。

以上是关于JavaScript 使用复选框从 MySQL 数据库中删除多行的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用Javascript从gridview获取复选框选中的行值

如何从 django 表单库中隐藏复选框并使用 Javascript 切换其显示属性

如何从复选框中获取值并使用 javascript 计算单击的项目

使用 jquery 表中的复选框从数组中删除 JavaScript 对象

使用jquery表中的复选框从数组中删除JavaScript对象

当使用 Javascript/JQuery 选中该行中的复选框时,从 HTML 表中的特定列获取数据