首页 文章

如何在选项中运行查询选择php

提问于
浏览
1

我试图在一个选项内运行另一个查询基于另一个查询这里是我的代码

<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>

这里的问题是类型在另一个表中,所以我想在病史诊断中选择诊断基础的类型diagnoseTypeID

<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>

我怎样才能做到这一点?如果有另一种方式?

2 回答

  • 0

    有一点需要注意,

    <?php $row2["ID"] ?>
    

    什么都不做,你忘了 echo 它 . 话虽这么说,而不是在内部运行查询取决于外部查询的值,而不是执行查询 .

    $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']."'");
    

    另外值得注意的是,您应该使用带占位符的参数化查询,直接在查询中使用变量可能会破坏它,或者最坏的情况下危害您的数据库 .

  • 1

    更好的选项使用连接查询这样的东西

    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>
    

相关问题