-1

我有闲置的数据库表'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
4

2 回答 2

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;
于 2012-06-24T11:41:56.010 回答
1

将您的代码更改为:

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

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

于 2012-06-24T11:43:02.403 回答