使用复选框从MySQL数据库中删除行


Delete Rows from MySQL Database Using Checkboxes

我试图从表中删除一行,其中包含从MySQL表生成的数据。我研究了这两个问题:如何删除行数据库结果使用复选框和使用复选框,PHP和MySQL删除多行。两个答案我都明白,但我遇到了一个问题。每个问题的复选框设置如下:

<input name="checkbox[<?php echo $row['id']?>]"

<input name="checkbox[]" type="checkbox" value="<?php echo $row['topic_id'];?>">

我无法在我的代码中使用这两个,因为我的表是在php中生成的,并且在我的代码中使用括号和引号(确切地说,是复选框名称或值属性)会在Sublime中抛出语法错误。我想知道是否有任何解决办法?

这是我的表的一个块:

<tbody>
    <?php
        $query = mysqli_query($db, "SELECT * FROM SOISInventoryList WHERE numInStock = 0 ORDER BY itemName");
        if(!$query){
            echo "Could not grab query.";
        }
        else{
            while($row = mysqli_fetch_assoc($query)){
                echo "<tr>";
                echo "<td class='strikeOut'>" . $row['itemName'] . "</td>";
                echo "<td class='strikeOut'>" . $row['numInStock'] . "</td>";
                echo "<td class='strikeOut'>" . "$" . $row['pricePerUnit'] . "</td>";
                echo "<td class='delete'>" . "<input type='checkbox' name='delete'>";
                echo "</tr>";
            }                                
        }
    ?>
</tbody>

您的语法问题(简而言之)来自使用echo命令单独打印每一行HTML的事实。对于您要执行的任务类型,请尝试使用其他语法

<?php while($row = mysqli_fetch_assoc($query)) : ?>
  <tr>
    <td class='strikeOut'> <?= $row['itemName'] ?> </td>
    (other TDs)
    <td class='delete'><input type='checkbox' name='delete[<?= $row['id']?>]'></td>
  </tr>
<?php endwhile ?>

以这种方式打印HTML省去了很多麻烦(而且看起来更漂亮)!

您不必拘泥于这里使用的确切语法。您可以简单地将整个数组传递给JavaScript,并将其呈现在页面上。最后,您真正需要的是每个复选框的"是否已选中",如果已选中,则"分配给它的ID是什么?"

然后,当您将其发布回PHP时,您可以决定如何处理该信息。例如,删除具有该ID的行。