我已经在这里看到了一些关于这个主题的问题,但是我无法找到解决我想要做的事情的方法。我有一个表,我希望能够检查每行旁边的复选框以具有多个删除功能。我在桌子上面放了一个删除按钮。
我的删除按钮:
<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新手
由于
答案 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();
}
}