2012-06-24 13 views
-1

MySQL的SELECT數據庫條目我有休耕數據庫表「表名」:與同列值

+----+---------+--------------+ 
| ID | user_id | meta_key1 | 
+----+---------+--------------+ 
| 1 |  1 | d   | 
| 2 |  1 | f   | 
| 3 |  1 | c   | 
| 4 |  2 | g   | 
| 5 |  3 | 1   | 
| 6 |  3 | 2   | 
| 7 |  4 | 4   | 
| 8 |  4 | 5   | 
| 9 |  4 | 5   | 
| 10 |  4 | 5   | 
+----+---------+--------------+ 

我想SELECT * FROM所有條目,其中USER_ID =「1」。

我使用現在的代碼只返回第一值:

$query = mysql_query("SELECT * FROM table_name WHERE user_id='1'"); 
$row = mysql_fetch_assoc($query); 

while($row){ 
    return $row["meta_key1"]; 
} 

結果總是從TABLE_NAME其中USER_ID = '(given_id)' 的第一個條目:

d 

雖然我想這樣的結果:

d 
f 
c 

回答

1

你的代碼更改爲:

while($row = mysql_fetch_assoc($query);){ 
    echo $row["meta_key1"]; 
} 

目前,只有你請撥打mysql_fetch_assoc一次。 您需要在每次需要下一行時調用它。

+0

試過了,沒有變化,返回的結果是table_name中的第一項。 –

+1

仔細一看,我用'echo'改變了'return'。當你返回第一個值時,確定你沒有下一個值,你不再在函數中。請看@nickb博客,他解釋瞭如何返回數組中的所有行。 – zessx

+0

是的,謝謝。解決了! –

5

您需要在循環不斷地讀取行中得到的每一行結果,與此類似:

while($row = mysql_fetch_assoc($query)){ 
    echo $row["meta_key1"]; 
} 

既然你在做return $row['meta_key1'],只要第一行是牽強,該功能與一個返回值。所以,如果你在一個函數中使用此,您將需要建立一個數組來獲取所有的值:

$return = array(); 
while($row = mysql_fetch_assoc($query)){ 
    $return[] = $row["meta_key1"]; 
} 
return $return; 
+0

試過。返回相同的結果。 –

+0

@AndreiStalbe - 再試一次':)' – nickb

+0

它的工作,謝謝。我一直非常關注函數本身,我忽略了'return'語句退出函數。 –