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

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

此时我有一个工作脚本,它只从我的数据库中删除一条记录(最新 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

标签: javascript php jquery mysql checkbox


【解决方案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);

【讨论】:

  • 谢谢,这真的很好用。将接受答案,什么时候可以。
猜你喜欢
  • 1970-01-01
  • 2017-11-26
  • 2017-08-19
  • 2014-07-18
  • 1970-01-01
  • 2015-03-18
  • 2014-05-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多