MySQL SELECT数据库条目具有相同的列值

时间:2012-06-24 11:40:17

标签: php mysql

我有fallowing数据库表'table_name':

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

我想从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

2 个答案:

答案 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;

答案 1 :(得分:1)

将您的代码更改为:

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

目前,您只能拨打mysql_fetch_assoc一次。 每次需要下一行时都需要调用它。