php将值传递给多个select查询

php将值传递给多个select查询,php,mysql,variables,select,get,Php,Mysql,Variables,Select,Get,在同一页面上的MySQL查询之间传递变量时遇到问题。也许有人能告诉我我做错了什么。我不熟悉PHP/MySQL,但答案似乎很简单,我就是看不出来。以下是我所拥有的: 一,。MySQL:表A: 二,。搜索结果页面。显示结果列表。结果由[$id]标识,链接将[$id]传递到另一个页面以获取结果详细信息。这很好用 三,。详情页。我从搜索结果页面获得查询结果,并显示表中的相关信息,由[$id]标识。这个很好用 <?php $sql = "SELECT * FROM Table_A

在同一页面上的MySQL查询之间传递变量时遇到问题。也许有人能告诉我我做错了什么。我不熟悉PHP/MySQL,但答案似乎很简单,我就是看不出来。以下是我所拥有的:

一,。MySQL:表A:

二,。搜索结果页面。显示结果列表。结果由[$id]标识,链接将[$id]传递到另一个页面以获取结果详细信息。这很好用

三,。详情页。我从搜索结果页面获得查询结果,并显示表中的相关信息,由[$id]标识。这个很好用

    <?php

    $sql = "SELECT * FROM Table_A
    WHERE id=" . $_GET["id"];

    $rs_result = mysql_query ($sql,$connect);  
    while ($row = mysql_fetch_assoc($rs_result)) {

    ?>

    <table class="table">
    <tr><td>Gene: </td><td><? echo $row[gene_id]; ?></td></tr>
    <tr><td>Protein: </td><td><? echo $row[protein_id]; ?></td></tr>
    <tr><td>Disease: </td><td><? echo $row[disease_id]; ?></td></tr>
    </table>

    <?  } ?>
四,。显示相关数据。在details页面上,我想使用上面查询中的protein_id显示同一数据库中表B中的相关数据。但我无法开始工作,将protein_id传递给下一个查询,如下所示:

表B:

我尝试了许多不同的方法来实现这一点,在第二个Select查询中使用连接,但似乎没有任何效果。我知道第二个查询是正确的,因为如果我硬编码$new_id=P12803;然后第二个查询获取数据

任何帮助都将不胜感激


谢谢

您需要将第二个循环移到第一个循环中,否则$row[protein_id]将返回空值。此外,将$row分配给两个抓取,我将第二个更改为$rowa。所以换成

while ($row = mysql_fetch_assoc($rs_result)) {

?>

<table class="table">
<tr><td>Gene: </td><td><? echo $row[gene_id]; ?></td></tr>
<tr><td>Protein: </td><td><? echo $row[protein_id]; ?></td></tr>
<tr><td>Disease: </td><td><? echo $row[disease_id]; ?></td></tr>
</table>

<?php

    $new_id = $row[protein_id];

    $sqla = "SELECT * FROM Table_B
    WHERE protein_asc='".$new_id."'";

    $rsa_result = mysql_query ($sqla,$connect);  
    while ($rowa = mysql_fetch_assoc($rsa_result)) {

    ?>

    <table class="table">
    <tr><td>Synonym: </td><td><? echo $rowa[synonym]; ?></td></tr>
    <tr><td>Name: </td><td><? echo $rowa[name]; ?></td></tr>
    </table>

    <?  } ?>

<?  } ?>

然后,我想提醒您mysql_uu函数已被弃用,因此我建议您切换到或,实际上您有sql注入的风险,请看这里。您应该使用prepared station来避免任何风险

您是否对两个不同的查询使用variable row?当然,我有一个括号来结束第一个循环。非常感谢你的帮助。也谢谢你对sql注入的建议。@Ken欢迎你,伙计,别忘了接受答案,以帮助将来有类似问题的人
    id | protein_asc | synonym | name | etc
    ----------------------------------------------
    11  | P12803    | ABC      | this |
    12  | P99613    | DEF      | that |

    <?php

    $new_id = $row[protein_id];

    $sqla = "SELECT * FROM Table_B
    WHERE protein_asc='".$new_id."'";

    $rsa_result = mysql_query ($sqla,$connect);  
    while ($row = mysql_fetch_assoc($rsa_result)) {

    ?>

    <table class="table">
    <tr><td>Synonym: </td><td><? echo $row[synonym]; ?></td></tr>
    <tr><td>Name: </td><td><? echo $row[name]; ?></td></tr>
    </table>

    <?  } ?>
while ($row = mysql_fetch_assoc($rs_result)) {

?>

<table class="table">
<tr><td>Gene: </td><td><? echo $row[gene_id]; ?></td></tr>
<tr><td>Protein: </td><td><? echo $row[protein_id]; ?></td></tr>
<tr><td>Disease: </td><td><? echo $row[disease_id]; ?></td></tr>
</table>

<?php

    $new_id = $row[protein_id];

    $sqla = "SELECT * FROM Table_B
    WHERE protein_asc='".$new_id."'";

    $rsa_result = mysql_query ($sqla,$connect);  
    while ($rowa = mysql_fetch_assoc($rsa_result)) {

    ?>

    <table class="table">
    <tr><td>Synonym: </td><td><? echo $rowa[synonym]; ?></td></tr>
    <tr><td>Name: </td><td><? echo $rowa[name]; ?></td></tr>
    </table>

    <?  } ?>

<?  } ?>