2013-05-18 34 views
0

我在同一頁上的MySQL查詢之間傳遞變量時遇到問題。也許有人可以建議我做錯了什麼。我是PHP/MySQL的新手,但答案似乎非常簡單,我只是沒有看到它。以下是我有:php將值傳遞給多個select查詢

1 MySQL的:表A:

id | gene_id | protein_id | disease_id | etc 
    ---------------------------------------------- 
    1 | 672  | P12803  | 091312 
    2 | 817  | P99613  | 020346 
    3 | 411  | P52021  | 055823 

2.搜索結果頁面。顯示結果列表。結果由[$ id]標識,並且<a href>鏈接將[$ id]傳遞到另一頁以獲取結果詳細信息。這工作完美。

3.詳細信息頁面。我從搜索結果頁面獲取查詢結果,並顯示由[$ 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> 

    <? } ?> 

4.顯示相關數據。在詳細信息頁面上,我想使用上面查詢中的「protein_id」在同一個數據庫中顯示來自表B的相關數據。但是,這我不能去上班,到「protein_id」傳遞給下一個查詢,如下所示:

表B:

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> 

    <? } ?> 

我已經嘗試了許多不同的方法來達到這個目的,使用加入第二個Select查詢,但似乎沒有任何工作。我知道第二個查詢是正確的,因爲如果我硬編碼「$ new_id = P12803;」那麼第二個查詢抓取數據。

任何幫助,將不勝感激。

感謝

+0

您是否在使用兩行不同查詢的變量行? – gpicchiarelli

回答

0

您需要將您的第二循環的第一循環中,否則$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_功能已被棄用,所以我會建議你切換到mysqliPDO而事實上你是在sql injection風險,這裏How can I prevent SQL injection in PHP?看看。您應該使用準備好的陳述來避免任何風險

+0

當然,我有一個支架正在關閉第一個循環。非常感謝您的幫助。也感謝您對sql注入的建議。 – Ken

+0

@Ken你好,老兄,別忘了接受答案,幫助未來的人們解決類似的問題 – Fabio