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

时间:2017-04-12 07:52:21

标签: php mysql

我试图在另一个查询中运行另一个查询,这里是我的代码

<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 :(得分:1)

有一点需要注意,

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

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

答案 1 :(得分:0)

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

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>