2013-08-26 50 views
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,狀態,EMP_ID(FK)}

部門表: {DEPT_ID(P K),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); 
?> 

回答

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. 「離開」是一個保留字,所以你必須在反引號之間括起來的SQL語句;
  2. 你的頁面中有Emp_ID,所以你應該傳遞它而不是Leave_ID;這將幫助您編寫更簡潔的SQL語句。
+0

請問我爲什麼在$ stmt - > bind_result(...);四個變量需要通過 –

+0

方法'bind_result'將結果集中的列綁定到變量。您的查詢包含4個字段,因此您必須傳遞4個變量,每個變量將存儲一個字段。 [鏈接](http://php.net/manual/en/mysqli-stmt.bind-result.php) – RenkyaZ