简体   繁体   English

在PHP中从表中多次删除

[英]Multiple Delete from table in PHP

I want to delete multiple members form the group, The if statement successfully assigns multiple members from a single group but the Deletion(ifelse) deletes only one member ! 我想从组中删除多个成员,if语句成功地从一个组中分配了多个成员,但是Deletion(ifelse)仅删除了一个成员!

if( isset( $_POST['add_member'] ) )
    {
        $group_id = $_POST['group_id'];

        foreach ($_POST['member_id'] as $member) {

         $query="SELECT id FROM member_group
                    WHERE member_id = $member AND `group_id` =  $group_id[0]";
        if(!mysqli_num_rows(mysqli_query($connection,$query)))
        {
            $query="INSERT INTO `member_group`(member_id,group_id)                                                                       VALUES($member,$group_id[0])";
            mysqli_query($connection,$query) or die(mysqli_errno($connection));
        }
           echo "<div class='alert alert-info'>Member Assigned. </div>";
        }
    }
    elseif( isset( $_POST['remove_member'] ) )
    {
         $member_id = $_POST['member_id'];

         foreach ($_POST['group_id'] as $group) {
            $query="DELETE FROM member_group
                WHERE group_id = $group AND `member_id` =  $member_id[0]" ;
         $rows = mysqli_query($connection,$query);

Thanks ! 谢谢 !

If you want to remove all the members of that group then remove condition for member_id from your query 如果要删除该组的所有成员,请从查询中删除member_id条件

$query="DELETE FROM member_group WHERE group_id = $group" ;

Or if you want to delete the selected members then from your post you have to extract each member like 或者,如果您要删除所选成员,则必须从帖子中提取每个成员,例如

$member_arr = explode(',',$_POST['member_id']);
foreach ($member_arr as $member) {
    $query="DELETE FROM member_group
            WHERE `member_id` =  $member" ;
}

If the $member_id[0] contains multiple values as you mentioned in the comment then you can write your query with IN like 如果$member_id[0]包含注释中提到的多个值,则可以使用IN编写查询,例如

$query="DELETE FROM member_group
            WHERE `member_id` IN (".$member_id[0].") " ;

Considering that $member_id[0] is in the form 1,2,3,4,5,6 so on.If it is in array format then you have to use IMPLODE like 考虑到$member_id[0]的格式为1,2,3,4,5,6依此类推。如果是array格式,则必须使用IMPLODE

$query="DELETE FROM member_group
            WHERE `member_id` IN (".implode(',',$member_id[0]).") " ;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM