使用PHP删除多个复选框

时间:2014-04-29 14:25:32

标签: php mysql checkbox

我正在尝试通过选中一个复选框并点击提交按钮来添加删除mysql表行的功能。无法弄清楚这里出了什么问题,并希望有人可以帮助我...

更新:以下内容现在正在运行,但不使用下面建议的预准备语句(仍需要学习如何操作)。

<table border="1" cellspacing="0" cellpadding="2" >
<thead>
    <tr>
        <th> Delete </th>
        <th> Column 1 </th>
        <th> Column 2 </th>
        <th> Column  3 </th>
        <th> Form URL </th>
    </tr>
</thead>
<tbody>
    <?php
        include('connect.php');
        $result = $db->prepare("SELECT * FROM campaigns ORDER BY ID ASC");
        $result->execute();
        for($i=0; $row = $result->fetch(); $i++){
    ?>
    <tr class="record">
    <form method="post">
        <td><input name="checkbox[]" type="checkbox" value="<?php echo $row['ID']; ?>"></td>
        <td><?php echo $row['camp']; ?></td>
        <td><?php echo $row['code']; ?></td>
        <td><?php echo $row['value']; ?></td>
        <td><?php echo $row['address']; ?></td>
        <td><a href="editform.php?id=<?php echo $row['ID']; ?>"> edit </a></td>
    </tr>
    <?php
        }
    ?>

    <tr>
    <td colspan="5"><input name="delete" type="submit" id="delete" value="Delete Campaign"></td>
    </form>
    </tr>

</tbody>
</table>

<?php

// Check if delete button active, start this 

if(isset($_POST['delete']))
{
    $checkbox = $_POST['checkbox'];

for($i=0;$i<count($checkbox);$i++){

$del_id = $checkbox[$i];
$sql = "DELETE FROM campaigns WHERE ID=$del_id";
$result=$db->query($sql);
}
// if successful redirect 
if($result){
echo "<meta http-equiv=\"refresh\" content=\"0;URL=index.php\">";
}
 }

?>

4 个答案:

答案 0 :(得分:1)

您收到的错误消息说明了一切。

mysqli_query的第一个参数是连接的资源。第二个是查询。我假设在表单上方的某处是实际连接到MySQL服务器的PHP代码?

查看mysqli_query

的手册页

----忽略那个----

实际上,您似乎试图在代码开头使用对象方式然后降低功能。

更改DELETE...查询以使用预准备语句,以便清理数据。之后,执行查询并检查错误。如果您的表是基于事务的,请将您的查询包装在事务中并检查错误,以便在需要时可以回滚。

总结一下:

  • 选择一种或另一种方法来处理mysqli功能。
  • 始终使用预备陈述
  • 在必要时使用交易
  • 阅读您收到的错误消息

答案 1 :(得分:0)

ID='$del_id'

您的ID字段是字符串值吗?如果没有,可能删除''将修复它。 你也可以这样做

foreach($checkbox as $del_id => $value)

而不是

for($i=0;$i<count($checkbox);$i++){

$del_id = $checkbox[$i];

答案 2 :(得分:0)

将您的代码包装在表单标记

<form method="post"></form>

提示:安排代码,获取PHP代码

答案 3 :(得分:0)

试一试

$result = mysqli_query($con,$sql);