-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 设置为查询中某一行的值,然后将其丢弃并用下一个值替换它。在移动到下一行之前,您需要保存该信息。尝试这个:

$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

做这样的事情:

$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 回答
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 回答
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 回答