虽然嵌套循环不返回正确的输出

问题描述:

我有一个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

我想以后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

$indvId = $row[0];正在返回第一项结果数组

我个人使用foreach循环,但你可以做到这一点,你把它添加一个计数器,即:$count = 0;循环之前和$count++;内环路和$indvId = $row[$i];

+0

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

+0

你可以发布print_r($输出),所以我可以看到数组是什么样子? – Dug