2015-08-16 82 views
0

我有一個while循環,應該首先從一個名爲submittedresume使用從另一個函數獲取的job_id individual_id表。然後它將在另一個while循環中使用該id從各個表中獲取first_namelast_name。然後它將使用另一個while循環從提交的恢復表中獲取submitted_id雖然嵌套循環不返回正確的輸出

我分割第一個和最後一個while循環以從輸出中獲取不同的值。

我第一次while循環。它首先使用從其他函數獲取的job_id從名爲submittedresume的表中獲取individual_id。它給了我兩個用戶ID的正確輸出:9和4.

global $database; 
    $query = "SELECT DISTINCT individual_id FROM submittedresume WHERE job_post_id='$id'"; 
    $output = $database->query($query); 
    while ($row = mysqli_fetch_array($output)) { 
     $indvId = $row[0]; 
    } 

這是第二個內部while循環。它給了我瑪麗珍(不再重複)和湯姆索耶的輸出。

$indvId = $row[0]; 
     $sql = "SELECT * FROM individual WHERE individual_id='$indvId'"; 
     $result = $database->query($sql);     
     while ($details = mysqli_fetch_array($result)) { 
      $first = $details['first_name']; 
      $last = $details['last_name']; 
      echo $first; 
      echo $last; 
     } 

這是我的全部功能:

public function displayApplications($id){ 
    global $database; 
    $query = "SELECT DISTINCT individual_id FROM submittedresume WHERE job_post_id='$id'"; 
    $output = $database->query($query); 
    while ($row = mysqli_fetch_array($output)) { 
     $indvId = $row[0]; 
     $sql = "SELECT * FROM individual WHERE individual_id='$indvId'"; 
     $result = $database->query($sql);     
     while ($details = mysqli_fetch_array($result)) { 
      $first = $details['first_name']; 
      $last = $details['last_name']; 
      $sqlquery = "SELECT DISTINCT resume_title FROM submittedresume WHERE individual_id='$indvId' order by submitted_id"; 
      $data = $database->query($sqlquery); 
      if (mysqli_num_rows($data) == 0) { 
        echo "Database is empty <br>"; 
       } else { 
        while (($name = mysqli_fetch_array($data))) { 
          echo $first . " " . $last . " "."<a href=handleDownload.php?id=$id>$name[0]</a><br>"; 
         } 
        } 
     } 
    } 
} 

這就是我得到現在:

first_name | last_name | resume_name 
Mary  | Jane  | resume_1 
Mary  | Jane  | resume_2 

這就是我在尋找:

first_name | last_name | resume_name 
Mary  | Jane  | resume_2 
Tom  | Sawyer | resume_1 
+0

你需要重寫你的查詢和使用'JOIN'代替 – CodeGodie

回答

2

我想以後while使用foreach循環:

例如:

$query = "SELECT DISTINCT individual_id FROM submittedresume WHERE job_post_id='$id'"; 
$output = $database->query($query); 
$details = mysqli_fetch_array($result); 

foreach($details as $key => $value){ 
     echo 'Key: '. $key . ' '. 'Value: '. $value; 
} 
+0

使用foreach時我得到了兩倍的輸出。有沒有辦法讓我刪除雙打? Key:0 Value:4Key:individual_id Value:4Key:0 Value:9Key:individual_id Value:9 –

+0

我已更新我的答案。我想這是我在'foreach'循環中使用時的錯誤,因爲while循環每個查詢的數據 – aldrin27

0

$indvId = $row[0];正在返回第一項結果數組

我個人使用foreach循環,但你可以做到這一點,你把它添加一個計數器,即:$count = 0;循環之前和$count++;內環路和$indvId = $row[$i];

+0

在foreach方法S很有意思。如果我使用foreach,我會怎麼做呢? –

+0

你可以發佈print_r($輸出),所以我可以看到數組是什麼樣子? – Dug