0

我有三张桌子(请假,员工,部门)

这是我的数据库

员工表:{ Emp_ID (PK), Emp_Fname, Emp_Lname, ContactNo_HP, ContactNo_Home, Emp_Email, Dept_ID(FK)}

离开表:{ Leave_ID (PK), Date_Apple, Leave_Type, Leave_Start, Leave_End, Status, Emp_ID(FK)}

部门表:{ Dept_ID (PK), Dept_Name, Dept_Desp}

当我单击“详细信息”时,它将出现一个新页面。只有具体

<tr>
    <td><?php echo $row["Leave_ID"];?></td>
    <td><?php echo $row["Emp_ID"];?></td>
    <td><?php echo $row["Date_Apply"];?></td>
    <td><?php echo $row["Leave_Type"];?></td>
    <td><?php echo $row["Leave_Start"];?></td>
    <td><?php echo $row["Leave_End"];?></td>
    <td><?php echo $row["Status"];?></td>
    <td><a href="app_status.php?id=<?php echo $row[Leave_ID];?>"
           target="_blank">Detail</a></td>
</tr>

在新页面中,我无法显示(Emp_Name、Dept_Name、ContactNo_HP、ContactNo_Home),因为 Emp_ID 是休假表中的外键,而 Dept_Name 在部门表中,它将 Dept_ID 作为员工表中的外键链接。

我在新页面中使用以下语句来显示数据

<?php
    $result = mysql_query("select * from `leave`");
    $row = mysql_fetch_assoc($result);
?>
4

1 回答 1

0

首先,您必须在详细信息页面中检索 Leave_ID:

$leaveID = $_GET['Leave_ID'];

然后您必须编写一个 SQL 代码,从三个表中进行选择并将其分配给一个变量(如 $sql):

select t1.Emp_Name, t2.Dept_Name, t1.ContactNo_HP, t1.ContactNo_Home
  from employee as t1 inner join department as t2
       on t1.Dept_ID = t2.Dept_ID inner join `leave` as t3
       on t3.Emp_ID = t1.Emp_ID
 where t3.Leave_ID = ?

在这一点上,我建议您使用带有准备好的语句的 MySQLi 对象:

$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("i", $leaveID);
$stmt->execute();
$stmt->bind_result($empName, $deptName, $contactNoHP, $contactNoHome);
while ($stmt->fetch()) {
    \\your code to display details here
}
$stmt->close();
$mysqli->close();

请注意:

  1. "leave" 是一个保留字,所以你必须在你的 SQL 语句中用反引号将它括起来;
  2. 您的页面中有 Emp_ID,因此您应该传递它而不是 Leave_ID;这将帮助您编写更简洁的 SQL 语句。
于 2013-08-26T10:50:09.437 回答