虽然嵌套循环不返回正确的输出
我有一个while循环,应该首先从一个名为submittedresume使用从另一个函数获取的job_id individual_id
表。然后它将在另一个while循环中使用该id从各个表中获取first_name
和last_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
我想以后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;
}
使用foreach时我得到了两倍的输出。有没有办法让我删除双打? Key:0 Value:4Key:individual_id Value:4Key:0 Value:9Key:individual_id Value:9 –
我已更新我的答案。我想这是我在'foreach'循环中使用时的错误,因为while循环每个查询的数据 – aldrin27
$indvId = $row[0];
正在返回第一项结果数组
我个人使用foreach循环,但你可以做到这一点,你把它添加一个计数器,即:$count = 0;
循环之前和$count++;
内环路和$indvId = $row[$i];
在foreach方法S很有意思。如果我使用foreach,我会怎么做呢? –
你可以发布print_r($输出),所以我可以看到数组是什么样子? – Dug
你需要重写你的查询和使用'JOIN'代替 – CodeGodie