-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"];
}

結果は常に、user_id ='(given_id)'であるtable_nameの最初のエントリです。

d

この結果が欲しいのですが:

d
f
c
4

2 に答える 2

5

次のように、結果のすべての行を取得するには、ループ内の行を継続的にフェッチする必要があります。

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

を実行していたのでreturn $row['meta_key1']、最初の行がフェッチされるとすぐに、関数は1つの値を返しました。したがって、これを関数で使用している場合は、すべての値を取得するために配列を作成する必要があります。

$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_assoc1回だけです。次の行が必要になるたびに呼び出す必要があります。

于 2012-06-24T11:43:02.403 に答える