在PHP中删除带有循环复选框的记录

时间:2013-01-27 09:03:48

标签: php

下面的

是我的代码的一部分,我试图通过复选框选择删除数据库记录。循环是我如何获取数据以及复选框。 (代码1 :)和(代码2 :)是我试图删除所选记录的地方。

正如您在循环中看到的那样,数据库中有3个字段,当删除记录时,代码2仅检查与第一个记录bname的匹配。但是我的问题是我需要在从系统删除之前检查是否所有三个数据库字段都匹配。 进一步解释这个问题;

bname | bvariant | bsku
-----------------------
apple |red       | 20g
apple |green     | 30g

当前代码查看与“apple”的匹配并删除所有两个数据行。但是如果使用选择了第1行,那么我需要调整代码来检查所有三个字段的数据库匹配,在这种情况下,只删除apple,red,20g。我已将AND bvariant='$wec2' AND bsku='$wec3'"添加到代码2中,但似乎无效。请帮助。

代码1:

while ($reK = mysqli_fetch_array($runBrands))
{
$wec = $reK['bname']; $wec2 = $reK['bvariant']; $wec3 = $reK['bsku'];
    echo "<tr class='brndTab'>";
    echo "<td class='brndTab'>".$reK["bname"]."</td>";
    echo "<td class='brndTab'>".$reK["bvariant"]."</td>";
    echo "<td class='brndTab1'>".$reK["bsku"]."</td>";
    echo "<td class='brc'><input type='checkbox' name='delz[]' value='$wec' ></td>";
    echo "</tr>";
}

代码2:

if(isset($_POST['delz'])) 
{
foreach($_POST['delz'] as $we)
  {
$Mo = mysqli_query($db,"DELETE FROM brands WHERE bname ='$we' AND bvariant='$wec2' AND     bsku='$wec3'");
  }
}

1 个答案:

答案 0 :(得分:0)

您的变量$ wec2和$ wec3未在您的代码2中初始化。您必须将它们作为隐藏值提交到代码1中。

但正如先前的评论者已经建议的那样。最好的方法是使用主键。