PHP使用复选框删除多个表行

时间:2017-06-20 07:52:21

标签: php sql pdo

我已经在这里看到了一些关于这个主题的问题,但是我无法找到解决我想要做的事情的方法。我有一个表,我希望能够检查每行旁边的复选框以具有多个删除功能。我在桌子上面放了一个删除按钮。

我的删除按钮:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    <input type="submit" id="staff_list_submit" name="multi_delete" value="Delete"
           onclick="return confirm('Do you really want to do that?')">
</form><br>

我的TD包含复选框:

        <td style="width: 60px; text-align: center; vertical-align: middle;"><input name="checkbox[]" type="checkbox" value="<?php echo $row['staff_id']; ?>"></td>

我的PHP代码来处理删除:

if(isset($_POST['multi_delete']))
{
     $checkbox = $_POST['checkbox'];
     for($i=0;$i<count($checkbox);$i++){
        $del_id = $checkbox[$i];
        echo $del_id;
        $stmt = $conn->prepare("DELETE FROM `Tom`.`staff_details` WHERE `staff_id`=`$del_id`;");
        $result = $stmt->execute();
    }

    if($result) {
        exit(header('Location: staff_multiple_delete.php'));
    }
}

我尝试回复$del_id,但没有任何回复。

单击“删除”按钮时,屏幕上出现两个错误:

Undefined index: checkbox
Undefined index: result

我一直把头发拉出来,如果有任何帮助,我们将不胜感激。我还是PHP新手

由于

1 个答案:

答案 0 :(得分:0)

它没有经过测试,但我认为你应该能够像以下那样做一些事情而不是循环 - 由于重复的prepare

而错过了准备好的陈述的重点
if( $_SERVER['REQUEST_METHOD']=='POST' && !empty( $_POST['checkbox'] ) ){

    $ids = implode( ',', $_POST['checkbox'] );
    $sql='delete from `tom`.`staff_details` where `staff_id` in ( :ids )';
    $stmt=$conn->prepare( $sql );

    if( $stmt ){
        $stmt->bindParam( ':ids', $ids );
        $stmt->execute();
    }
}