我的网站上有这个 POST 表单,旨在将未指定数量的用户分组。它的工作原理是在我的数据库中使用他们姓名旁边的复选框循环出所有用户。您勾选您想要的用户框,为组命名,然后提交表单。
为了完成上述操作,由于数据库的设置方式,我需要执行两个查询。该表称为 Participant/Group,它包含 3 列:idParticipant、idGroup 和 GroupName。这是我到目前为止所拥有的,但它有缺陷:
$aParticipants = array_map('mysql_real_escape_string', $_POST['check']);
$pIn = implode("),(", $aParticipants);
$gIn = implode("', '", $aParticipants);
$query1 = mysql_query("INSERT INTO `Participant/Group` (`idParticipant`) VALUES ($pIn);");
$query2 = mysql_query("UPDATE `Participant/Group` SET GroupName = '".$_POST['group']."' WHERE idParticipant IN ('$gIn')");
因此,第一个查询将用户的 id 插入数据库,第二个查询将组名添加到每个新插入的 id 中。如果您可以结合这两个查询,我认为它可以解决我所有的问题,但我很确定语法不允许这样做。
无论如何,上述代码的问题在于它会用任何后续的重叠查询覆盖数据库。这里要记住的重要一点是用户不限于一个组。id 为 7 的用户可以在一个名为 Group A 的组中,也可以在一个名为 Group C 的组中。需要有两个单独的行来记录这一点。使用上面的代码,它创建了单独的行,但它们都将具有上次在表单中提交的组名。
任何人都知道如何调整我的代码(如果需要,可以重新编写)来解决这个问题?