2017-04-12 48 views
1

我试图运行基于此另一个查询的选项里面另一个查询内的查询是我的代码如何运行的选项选择PHP

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

我该怎么办呢?如果有另一种方式?

+0

您可以使用加入查询 –

+1

请不要这样做,请不要在您的视图中运行查询..请使用mvc模式 –

+0

@ShafiqulIslam yaah谢谢youu –

回答

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

也是其值得指出的是,你应该使用参数化查询与占位符代替,直接用在查询变量可能充其量打破它,或在最坏的情况危及数据库。

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>