Php $.ajax不会使用复选框删除多个表行

Php $.ajax不会使用复选框删除多个表行,php,jquery,mysql,sql,ajax,Php,Jquery,Mysql,Sql,Ajax,我目前很难理解为什么我的代码没有执行以下多表行删除php代码: incude("dbconnect.php"); if (isset($_POST["id"])) { foreach ($_POST["id"] as $id) { $sql = "DELETE FROM doctor WHERE DOC_LICENSE_NUM='.$id.'"; if ($mydatabase->mysqli_query($sql) === TRUE) {

我目前很难理解为什么我的代码没有执行以下多表行删除php代码:

incude("dbconnect.php");

if (isset($_POST["id"])) {

    foreach ($_POST["id"] as $id) {

        $sql = "DELETE FROM doctor WHERE DOC_LICENSE_NUM='.$id.'";

        if ($mydatabase->mysqli_query($sql) === TRUE) {
            echo "<div>Record deleted successfully</div>";
        } else {
            echo "Error deleting record: " . $mydatabase->error;
        }
        //$sql="DELETE from DOCTOR where DOC_LICENSE_NUM='".$id."'";
        //mysqli->query($connect, $sql);
    }
    //mysqli->close();
}
而dbconnect将$mydatabase链接到sql。现在,我创建了一个id为btn_delete的按钮,以便在处理sql中要删除的多行时使用javascript单击函数

<div style="float: right; margin: 0px 10px 10px 0px;"><button type="button" name="btn_delete" class="btn" id="btn_delete" ><span class="fa fa-trash" style="font-size:16px; margin-right:5px;"></span>Delete Multiple</button></div>
我所做的是,我使用$.ajax来收集数组中的复选框,并使用php的url来删除表中的行,如果它已输入php,它将继续淡出表中的行

$('#btn_delete').click(function(){
    if(confirm("Are you sure you want to delete these?")){
        var id=[];
        $(':checkbox:checked').each(function(i){
            id[i]=$(this).val();
            //alert(id);
        });

        if(id.length===0){
            alert("Please select at least two checkboxes");
        }else{
            $.ajax({
                url:'muldel.php',
                method: 'POST',
                data: {id:id},
                success: function(){
                    for (var i=0; i<id.length; i++){
                        $('tr#'+id[i]+'').css('background-color', '#ccc');
                        $('tr#'+id[i]+'').fadeOut('slow');
                    }
                    //location.reload();
                }

            });
        }
    }else{
        return false;
    }
});

然而,当它继续淡出我的表中的行时,在我刷新它之后,它不会像我期望的那样删除这些行。我错过了什么?我忘了提到我在jquery中使用了一个唯一的实体键作为我的id

,您正在将id发布为独立的id,即1,2,3,4等。这应该使用explode转换为php侧数组1,2,3,4中的数组;或者将数组$\u POST[id]放入foreach循环中

foreach ($array as $id) {

}
希望这有帮助

或者在php中不使用foreach的另一种方式,您可以在mysql中使用。
如果有兴趣,请检查完整的代码

由于要从Ajax调用传递数组,因此需要使用以下内容构建SQL查询:

$sql = "DELETE FROM doctor WHERE DOC_LICENSE_NUM IN (" . implode(",", $_POST['id']) . ".)";

// Execute 
 if ($mydatabase->mysqli_query($sql) === TRUE) {
     echo "<div>Record deleted successfully</div>";
 } else {
    echo "Error deleting record: " . $mydatabase->error;
 }

注意:您可以使用SQL注入。当您的查询需要其他人提供参数才能执行时,请始终使用准备好的语句。可能有点帮助。

您可以使用下面的查询删除多条记录

$sql = "DELETE FROM doctor WHERE DOC_LICENSE_NUM IN (" . implode(',', $_POST['id']) . ")";
if ($mydatabase->mysqli_query($sql) === TRUE) {
    echo "<div>Record deleted successfully</div>";
} else {
    echo "Error deleting record: " . $mydatabase->error;
}

不需要迭代循环。

您的查询错误,无法从您应该在中使用的ID中删除多个数据,而不是=,其次,您需要在php中对json_进行解码,并将其内爆为一个字符串,以在整个数组中执行或循环使用他使用的=@SaadSuriforeach@AmrAly但他没有使用json_decode将其转换为array@user311699您不能从客户端直接将数组发送到服务器,因为您已经用JSON编码了数组。stringify@Saad苏里他没有在jquerywhat does==表示sql查询中的数组编码,它应该是==what does==表示sql查询中的数组,它应该是==