2010-10-14 163 views
1

我很困惑。php mysql選擇下拉列表選擇不同的查詢

$sql_n = mysql_query("SELECT * FROM table1 WHERE n='{$row['n']}'"); 
$row_n = mysql_fetch_array($sql_n); 

$sql= mysql_query("SELECT DISTINCT p FROM table1"); 
while($row = mysql_fetch_array($sql)) { 

    if($row['p'] == $row_n['p']) { 
     $selected = " selected"; 
    } 

    $np .= "<option value='{$row['p']}'$selected>{$row['p']}</option>"; 
} 

當我使用的查詢SELECT DISTINCT p$selected不工作,但如果我使用SELECT p。它的工作,任何想法爲什麼?

+0

'$ row ['n']'來自第一個查詢?這是另一個while循環的所有部分嗎?如果是這樣,你將覆蓋'$ row'變量。 – Alec 2010-10-14 14:18:44

+0

'$ selected'除查詢問題外無法正常工作。只要你有一場比賽,所有以下將被標記爲「選中」。另外,'$ selected'應該是''selected ='selected'「' – thetaiko 2010-10-14 14:19:25

+1

試試print_r($ row)來查看從數據庫中得到的每行內容。 – Mike42 2010-10-14 14:21:53

回答

0

我的第一反應是解決您的問題的方法是在第一個查詢中添加DISTINCT。

0

沒有做PHP,但知道引擎是如何有時會彌補列名,如果你不明確暗示與「爲」列名,也可以做一些獨特如

SELECT DISTINCT數p作爲DISTINCT_P

因此,結果查詢中的列名「p」不存在。

你可能想嘗試

選擇兩個截然不同的p- P

所以隱含結果列名是「P」和限定你的日常休息。

+0

我以前已經試過,它仍然是一樣的:( – cicakman 2010-10-14 14:46:56

0

認爲這是查詢,現在我不認爲這是...而是,你的$選擇變量。它不是任何地方申報,直到實際

if($row['p'] == $row_n['p']) { 
     $selected = " selected"; 
    } 

你可能需要在「其他」這並設置

$選擇=「「;

所以它不會是一個變量不存在,當你正在試圖在下面的字符串建立出選項列表時試圖對它進行分析時,它將失敗。