-1

私は 2 つのテーブルを持っています。groupid=1 のユーザー数を調べて、そのグループのすべてのメンバーを配列に出力するのが好きです。

    groups table
    userid   groupid
      1         1
      2         1
      3         1
      4         2
      5         2


      users table
      userid    name
      1         tom
      2         tracy
      3         dave
      4         connie
      5         tim

   $query "SELECT COUNT(userid) FROM `groups` WHERE `grouped`=`1`";
   $result=mysql_query($query);
   $row = mysql_fetch_array($result);

   $num_users;
   $num_users=$row['COUNT(userid)'];

   while($row = mysql_fetch_array($result)){

     }


     $member_list;
      $member_list={
    //key(userid)  value(name)
     '1'=>'tom',
     '2'=>'tracy',
      '3'=>'dave'
        }

上記のデータを含む $member_list 配列を取得する方法がわかりませんか? 何か案は?

4

4 に答える 4

1

あなたはコードを持っています:

 while($row = mysql_fetch_array($result)){
 }

これにより、$row がクエリの行の 1 つの値に設定され、それが破棄されて次の値に置き換えられます。次の行に移動する前に、その情報を保存する必要があります。これを試して:

$member_list = array();
while($row = mysql_fetch_array($result)){
    $member_list[$row['userid']] = $row['name'];
}

その後、すべてのメンバーを$member_list取得し、それを反復処理したり、print_r() を使用したり、特定のメンバーのデータを取得したり、その他必要なものを何でも取得したりできます。

于 2012-05-31T21:09:52.783 に答える
1

これを試して。私はそれをテストしていませんが、うまくいくと思います。

$query = "SELECT userid FROM groups WHERE groupid='1'";
$result = mysql_query($query);

while($row = mysql_fetch_array($result)) {
    $userids[] = $row["userid"];
}

$query = "SELECT * FROM users";
$result = mysql_query($query);

while ($row = mysql_fetch_array($result)) {
    if (in_array($row["userid"], $userids) {
        $users[$row["userid"]] = $row["name"];
    }
}
于 2012-05-31T21:10:47.353 に答える
1

次のようにします。

$sql = "select groups.id, user.id, user.name from groups INNER JOIN users ON groups.userid = users.userid where groupid = 1";

    $query = mysql_query($sql);

    if(mysql_num_rows($query) > 0 ) {
           $users = array();
       while($fields = mysql_fetch_assoc($query)) {
           $users[$fields['user_id']] = $fields['name'];
       }
    } 

print_r($users);
于 2012-05-31T21:10:21.957 に答える
0

次のようなことができます。

   while($row = mysql_fetch_array($result)){
        printf ("ID: %s  Name: %s", $row[0], $row["name"]);
    }

また

    /*everytime it fetches the row, adds it to array...*/
    while($r[]=mysql_fetch_array($sql));

    echo "<pre>";
    //= Prints $r as array =================//
    print_r ($r);
    //=============================//
    echo "</pre>";
于 2012-05-31T21:03:41.467 に答える