>我正在尝试基于另一个查询的选项中运行另一个查询,这是我的代码
<select name ="selectDiagnose" id = "Diagnose">
<?php
$result2 = $user->con->query("SELECT * FROM `medical-history` WHERE patientID = '$row["ID"]' ");
while ($row = $result2->fetch_array()){
?>
<option value = '<?php $row2["ID"] ?>'> <?php echo "Name: ".$row2["name"]." ,Date: ".$row2["date"]." ,Type: ".$row2["DiagnosetypeID"] ?></option>
<?php
}
?>
</select>
这里的问题是类型在另一个表中,所以我想根据病史诊断类型ID 选择诊断类型
<select name ="selectDiagnose" id = "Diagnose">
<?php
$result2 = $user->con->query("SELECT * FROM `medical-history` WHERE patientID = '$row["ID"]' ");
while ($row = $result2->fetch_array()){
?>
<option value = '<?php $row2["ID"] ?>'> <?php echo "Name: ".$row2["name"]." ,Date: ".$row2["date"]." ,Type: ". **$user->con->query("SELECT type FROM `Diagnose type` WHERE ID = '$row["diagnosetypeID"]' ");** ?></option>
<?php
}
?>
</select>
我该怎么做?如果有其他方法?
需要注意的一件事,
<?php $row2["ID"] ?>
什么都不做,你忘了echo
它。话虽如此,与其在内部运行依赖于外部查询的值的查询,不如改为JOIN
查询并仅执行一个查询。
$result2 = $user->con->query("SELECT mh.*, dt.type
FROM `medical-history` mh
JOIN `Diagnose type` dt ON dt.ID=mh.diagnosetypeID
WHERE patientID = '".$row['ID']."'");
另外值得注意的是,您应该使用带有占位符的参数化查询,直接在查询中使用变量可能会破坏它,或者在最坏的情况下破坏您的数据库。
更好的选择使用这样的连接查询
SELECT mh.*, dt.type FROM `medical-history` mh LEFT JOIN `Diagnose type` dt ON dt.ID=mh.diagnosetypeID WHERE patientID = '".$row['ID']."'";
有关加入的详细信息
https://dev.mysql.com/doc/refman/5.7/en/join.html
如果要获取没有连接查询的类型名称,请检查此
<select name="selectDiagnose" id="Diagnose">
<?php
$result2 = $user->con->query("SELECT * FROM `medical-history` WHERE patientID = '" . $row["ID"] . "'");
while ($row = $result2->fetch_array()) {
$result3 = $user->con->query("SELECT type FROM `Diagnose type` WHERE ID = '" . $row["diagnosetypeID"] . "'");
$row_type = $result3->fetch_array();
$type_name = $row_type['type'];
?>
<option
value='<?php $row2["ID"] ?>'> <?php echo "Name: " . $row2["name"] . " ,Date: " . $row2["date"] . " ,Type: " . $type_name ?></option>
<?php
}
?>
</select>