【问题标题】:PHP / MySQL: Error in multiple delete, only latest ID deletedPHP / MySQL:多次删除出错,只删除了最新的ID
【发布时间】:2020-10-04 14:33:02
【问题描述】:

我的代码有些问题。我想从选择选项填充的 MySQL 数据库中删除多个数据。

示例:我选择id为5、2、4的数据,然后按删除按钮,它只删除最新的id为5的数据。

我能知道是什么问题吗?以下是我的代码:

index.html

    <?php

    include("configPDO.php");

    $smt = $conn->prepare("SELECT * FROM frame_list ORDER BY framework_name ASC");
    $smt->execute();
    $results = $smt->fetchAll();


    ?>

<form method="post" id="multiple_select_form">
    <select name="framework[]" id="framework" class="form-control selectpicker" data-live-search="true" multiple>
        <?php foreach ($results as $row2): ?>
            <option value= <?php echo $row2["framework_id"]; ?>><?php echo $row2["framework_name"];?></option>
        <?php endforeach ?>
    </select>
<br><br>
<input type="hidden" name="framework_id" id="framework_id" />
<input type="submit" name="submit" class="btn btn-info" value="Submit" />
</form>

   <script>

    $(document).ready(function(){
    $('.selectpicker').selectpicker();

    $('#framework').change(function(){
    $('#framework_id').val($('#framework').val());
    });

    $('#multiple_select_form').on('submit', function(event){
    event.preventDefault();
    if($('#framework').val() != '')
    {
    var form_data = $(this).serialize();
    $.ajax({
        url:"delete.php",
        method:"POST",
        data:form_data,
        success:function(data)
        {
        //console.log(data);
        $('#framework_id').val('');
        $('.selectpicker').selectpicker('val', '');
        alert(data);
        }
    })
    }
    else
    {
    alert("Please select framework");
    return false;
    }
    });
    });


    </script>

删除.php

    <?php

    include("configPDO.php");

    $smt = $conn->prepare("DELETE FROM frame_list WHERE framework_id = '".$_POST["framework_id"]."'");
    $smt->execute();

    if($smt){

        echo "Data DELETED";
    }else{
        echo "Error";
    }


    ?>

如果有人能解决我的问题,不胜感激。

非常感谢。

【问题讨论】:

  • 你的$_POST["framework_id"] 应该是一个数组,因为它是一个多选。因此,您应该使用DELETE FROM myTable WHERE id IN ".$_POST['framework_id']." 删除该数组中的所有值

标签: javascript php jquery mysql bootstrap-4


【解决方案1】:

这是覆盖框架 ID 的地方:

$('#framework').change(function(){
    $('#framework_id').val($('#framework').val());
});

delete.php 只会在您的 ajax 请求发送时运行(在这种情况下,当您单击提交按钮时)。

所以如果你想同时删除它们,也许你会想在一个请求中传递多个 id。或者您可能希望在每次选择 id 时发送 ajax 请求来一一删除它们。

【讨论】:

  • 然后呢?能给出完整的答案吗?
  • 加入所选的 id 就可以了。 $('#framework_id').val(selected.join(','))
  • 另外,你无法在提交回调时获取这些选定的 id,framework_id 输入不是必需的。
猜你喜欢
  • 2013-05-30
  • 1970-01-01
  • 1970-01-01
  • 2013-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-28
  • 2014-01-03
相关资源
最近更新 更多