MySQL中的MySQL查询和输出

时间:2012-05-31 20:57:19

标签: php mysql

我有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 个答案:

答案 0 :(得分: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(),获取特定成员的数据或其他任何您想要的内容。

答案 1 :(得分: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);

答案 2 :(得分: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"];
    }
}

答案 3 :(得分:0)

你可以这样做:

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

OR

    /*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>";