【发布时间】:2012-11-19 04:32:51
【问题描述】:
我有两个表,employee 作为父表,license 作为子表。它们都有一个Lic_ID 列供参考,该列是license 中的PK 和employee 中的FK。 license 表还有一个列 Lic_Type 包含许可证的名称。
我正在尝试创建一个带有列表框的表格,以便可以更新 employee 表格。列表框value 需要填充license.Lic_ID,license.Lic_Type 将显示在option 中。这是我所拥有的:
(Employee name, Id, etc. called out up here)
<?php
echo "<select name=\"Lic\">";
echo "<option value=\"\">Select...</option>";
$sql = $mysqli->query("SELECT Lic_ID, Lic_Type FROM license");
while($row = $result->fetch_assoc())
{
echo "<option value=\"" . $row['Lic_ID'] . "\">" . $row['Lic_Type'] . "</option>";
}
echo "</select>";
?>
这样效果很好,它显示了许可证类型并将值设置为许可证 ID。如果为员工设置了许可证 ID,我想要做的是拥有 <option selected="selected">。这段代码不起作用,但我认为它说明了我正在尝试做的事情:
<?php
echo "<select name=\"Lic\">";
echo "<option value=\"\">Select...</option>";
$sql = $mysqli->query("SELECT license.Lic_ID, license.Lic_Type, employee.Lic_ID FROM employee INNER JOIN license ON employee.Lic_ID = license.Lic_ID");
while($row = $result->fetch_assoc())
{
echo "<option value=\"" . $row['license.Lic_ID'] . "\"";
if($row['employee.Lic_ID'] = $row['license.Lic_ID']){echo "selected=\"selected\";}
echo ">" . $row['license.Lic_Type'] . "</option>";
}
echo "</select>";
?>
有没有办法完成我想做的事情?
【问题讨论】:
-
这看起来像您正在获取所有员工以及每个员工加入的许可证类型。您是否要为单个员工执行此操作?
-
您应该使用两个查询,一个用于获取可能的许可证选项(您在原始代码中拥有),然后一个用于选择或迭代员工。您试图以一种没有意义的方式组合特定记录和所有可能的选项。
-
@DavidHarkness 我正在尝试为所有员工获取它,而不是单个员工。
-
@MattWhipple 我同意这没有意义。我意识到这段代码是错误的方法,我真的只是想说明我想要完成的事情。如果我使用两个单独的查询,我将如何通过同一个循环运行它们?另外,为什么投反对票?
标签: php mysql inner-join