循环时将查询与PHP进行比较

时间:2010-11-13 15:50:52

标签: php mysql

这是我的表格设置:

  • 员工:员工信息,姓名,地址等......
  • group:分发组列表。
  • employee2group:将员工链接到多个组的表。

我以这种方式进行设置,以便将来可以添加组,而无需向employee表添加列。这对你们所有人来说似乎都是常识,但几个月前我刚开始使用PHP,所以一切都还是新的,让我感到困惑。

所以,我正在处理我的更新表单,该表单将显示一个填充了简单SELECT * FROM group查询的复选框列表。我的想法是,当我在更新表单中查看员工时,显示员工所属的“已检查”。

目前,我显示复选框列表的while循环是:

<?php
 $group_list_query = "SELECT * FROM group"
 $group_list_result = mysql_query($group_list_query, $cmsWrite)
 while ($row = mysql_fetch_assoc($group_list_result)) {
  echo "<input type=\"checkbox\" name=\"distro_{$row['group_name']}\"> {$row['group_name']}";
 }
?>

非常简单。我可能会有一些语法错误,但在我的代码中它们不存在,因为它工作正常。

所以我需要做的是运行另一个只返回员工所属组的名称的查询:

SELECT group.group_name 
FROM group JOIN employee2group ON group.group_id = employee2group.group_id 
WHERE employee2group.employee_id ='{$_GET['employee_id']}'

然后,我需要比较两个查询,并在没有匹配时输出一个普通的复选框,并在匹配时输出一个选中的复选框。

我尝试执行设置$row = query1$row2 = query2的while语句,并比较$row$row2值,但之后只返回两个查询都有结果的实例而不是所有这些。

我希望这是有道理的,我已经在互联网上拖了一会儿,并没有发现任何与我的问题有关的内容。

感谢阅读!

1 个答案:

答案 0 :(得分:2)

两种解决方案:

1:获取用户所属的groupIds数组,然后循环遍历组列表。使用in_array检查id是否在该数组中,如果它不显示复选框

2:在employee2group表上执行左连接并检查值是否为null,如果其null显示复选框。

-

关闭问题主题,但你也应该看一下使用绑定参数,而不是仅仅在sql语句中包含它们,否则将其打开为sql注入。