0

下面是我试图通过复选框选择删除数据库记录的代码的一部分。循环是我与复选框一起获取数据的方式。(code 1:) 和 (code 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'");
  }
}
4

1 回答 1

0

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

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

于 2013-01-27T09:32:47.923 回答