gpt4 book ai didi

PHP 比较两个 while 循环的结果

转载 作者:行者123 更新时间:2023-11-29 12:51:35 25 4
gpt4 key购买 nike

我有以下疑问:

$state = get['state'];

$getPossibleIDs = "SELECT * FROM ".$report_group_lookup;
$qPossibleID = $conn->prepare($getPossibleIDs);
$qPossibleID -> execute();
while($rowPossible = $qPossibleID->fetch())
{
$possibleID = $rowPossible['id'];
$possibleName = $rowPossible['name'];
$getSpecificIDs = "SELECT * FROM rbs_report_type_2_specific WHERE rbs_report_type_id =".$state;
$qSpecifcID = $conn -> prepare($getSpecificIDs);
$qSpecifcID -> execute();
while($rowSpecfics = $qSpecifcID->fetch())
{
$specificIDs = $rowSpecfics['rbs_specific_id'];

if($possibleID == $specificIDs)
{
echo $possibleName."-Yes<br/>";
}
else
{
echo $possibleName."-No<br/>";
}
}
}

我想做的是比较两个 while 查找的结果,第一个查找 getPossibleIDs 找到该语句可以查看的所有可能的 ID。第二个 getSpecificIDs 仅查找之前已选择的ID。

它几乎可以工作,但是第二个查询查看包含以下信息的表:

------------------------------------
|rbs_report_type_id|rbs_specific_id|
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |

所以我得到的结果重复了三次,每个 rbs_spefic_id 一次:

HDD Coordinator-No
HDD Coordinator-No
HDD Coordinator-No
Rig Manager-Yes
Rig Manager-No
Rig Manager-No
Driller-No
Driller-Yes
Driller-No
Tank Hand-No
Tank Hand-No
Tank Hand-Yes

而不是:

HDD Coordinator-No
Rig Manager-Yes
Driller-Yes
Tank Hand-Yes

关于如何相应地更改输出有什么建议吗?

谢谢

最佳答案

不要执行内部循环,而是使用 JOIN 查询在第一个查询中完成所有操作

$getPossibleIDs = "
SELECT rgl.id, rgl.name,
CASE WHEN rrt2s.rbs_specific_id IS NOT NULL THEN 'Yes' ELSE 'NO' END as `match`
FROM ".$report_group_lookup." rgl
LEFT JOIN rbs_report_type_2_specific rrt2s
ON rrt2s.rbs_specific_id = rgl.id
AND rrt2s.rbs_report_type_id = ?";
$qPossibleID = $conn->prepare($getPossibleIDs);
$qPossibleID -> execute(array($state));
while($rowPossible = $qPossibleID->fetch())
{
echo $rowPossible['name']. " -".$rowPossible['match']."<br />";
}

关于PHP 比较两个 while 循环的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24638447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com