按用户级别从MySql表中选择所有ID,并将每个级别的ID数存储在数组中?

时间:2012-01-27 19:51:22

标签: php mysql arrays

我有以下功能:

//Counts The Users In The Database Per Level And Stores The Results In An Array
public function countUsers() {
    $users = array();
    $length = array();
    for( $i = 0; $i >= 2; $i++){
        $sql   = "SELECT user_id FROM users WHERE user_level = '$i'";
        if ($stmt = $this->connect->prepare($sql)) {
            $stmt->bind_result($id);
            $stmt->execute();
            while ($row = $stmt->fetch()) {
                $stmt->bind_result($id);
                $users[] = $id;
            }
            $stmt->close();
            $length[] = sizeof($users);
        } else {
            $error              = true;
            $message['error']   = true;
            $message['message'] = CANNOT_PREPARE_DATABASE_CONNECTION_MESSAGE;
            return json_encode($message);
        }
    }   
    return $length;
}

这个函数假设循环遍历表并将id存储在每个级别的数组中,然后获得每个级别的每个数组的大小。我的意思是,我有10个用户为0级,23个为1级,依此类推,我需要将这些信息存储在一个数组中。

我的功能出了什么问题?

2 个答案:

答案 0 :(得分:5)

你能让SQL为你做更多的工作吗?

SELECT   user_level,COUNT(user_id) usercount
FROM     users 
GROUP BY user_level;

这将为您提供每个用户级别的所有计数。

答案 1 :(得分:1)

$users = array();

应该在for循环中。 但是如果将sql查询更改为:

,会好得多
"SELECT COUNT(*) FROM users WHERE user_level = '$i'"

或者如果使用GROUP BY子句

会更好