Php 如果查询结果与另一个查询结果中的任何值匹配
我有两个查询生成面板ID。一个查询只生成与产品相关的面板ID。另一个查询生成所有可用的面板ID 我试图通过复选框显示所有面板,但相关面板显示为选中状态。我已将相关面板存储在Php 如果查询结果与另一个查询结果中的任何值匹配,php,mysql,Php,Mysql,我有两个查询生成面板ID。一个查询只生成与产品相关的面板ID。另一个查询生成所有可用的面板ID 我试图通过复选框显示所有面板,但相关面板显示为选中状态。我已将相关面板存储在$panel\u id中,但是,以下代码似乎只循环一次,因为它只检查一个相关面板。我不知道该怎么办 //related panels $panel_id = $row['panel_profile_id']; /all panels $result = mysqli_query($con,"SELECT * FROM pa
$panel\u id
中,但是,以下代码似乎只循环一次,因为它只检查一个相关面板。我不知道该怎么办
//related panels
$panel_id = $row['panel_profile_id'];
/all panels
$result = mysqli_query($con,"SELECT * FROM panel_profile");
while($row = mysqli_fetch_array($result)) {
if($row['panel_profile_id'] == $panel_id) {
echo '<input type="checkbox" name="panel_profile[]" value="' . $row['panel_profile_id'] . '" checked="checked">' . $row['name'] . '<br />';
} else {
echo '<input type="checkbox" name="panel_profile[]" value="' . $row['panel_profile_id'] . '">' . $row['name'] . '<br />';
}
}
表:关系表
wood_species_id | panel_profile_id
----------------+-----------------
1 | 1
您可以使用左连接来选择应检查哪些面板ID,从而让数据库为您完成这项工作 比如说, 如果以下命令返回了要检查的面板配置文件列表
SELECT panel_profile_id FROM relationship_table WHERE wood_species_id=4
你可以用
SELECT panel_profile.panel_profile_id,
(products.panel_profile_id IS NOT NULL) AS checked
FROM panel_profile LEFT JOIN relationship_table
ON panel_profile.panel_profile_id=products.panel_profile_id
WHERE wood_species_id=4
此查询返回两列,panel_profile_id和checked列,如果应该选中,则返回1;如果不应该选中,则返回0。您可以使用子查询获取与产品对应的面板,然后将这些面板标记为选中,如下所示:
SELECT *, panel_profile_id IN (SELECT panel_profile_id FROM relationship_table WHERE wood_species_id = 2) as checked
FROM panel_table
您能发布两张表的结构吗?不确定如何在此处设置表的样式哪张表有panel\u profile\u id字段?两张表都有哦…好的,我的错了…我看到了。。。
SELECT *, panel_profile_id IN (SELECT panel_profile_id FROM relationship_table WHERE wood_species_id = 2) as checked
FROM panel_table