【问题标题】:PHP delete multiple table rows using checkbox [duplicate]PHP使用复选框删除多个表行[重复]
【发布时间】:2017-06-20 07:52:21
【问题描述】:

我已经在这里看到了一些关于这个主题的问题,但我看不到我正在尝试做的事情的解决方案。我有一个表,我希望能够选中每行旁边的复选框以具有多个删除功能。我在表格上方放置了一个删除按钮。

我的删除按钮:

<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 新手

谢谢

【问题讨论】:

  • 了解prepared Statements以防止SQL注入
  • 表单中有n个元素Checkbox
  • $_POST['checkbox'] 是从哪里来的?
  • 复选框来自我的输入复选框的名称。第二个代码sn-p。准备好的语句稍后会添加,我只是想先得到一些工作代码。

标签: php sql pdo


【解决方案1】:

它没有经过测试,但我认为您应该能够执行以下操作而不是循环 - 由于重复的 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();
    }
}

【讨论】:

  • 嗨 RamRaider,我试了一下,但它似乎没有识别出复选框已被选中。我见过的所有示例都建议了复选框的布局。
猜你喜欢
  • 2014-02-16
  • 2012-01-21
  • 2012-01-21
  • 2012-04-26
  • 2019-08-24
  • 1970-01-01
  • 2013-01-06
  • 2016-12-01
相关资源
最近更新 更多