簡體   English   中英

按用戶級別從MySql表中選擇所有ID,並將每個級別的ID數存儲在數組中?

[英]Select all ids from a MySql table by a user level and store the number of ids per level in an array?

我有以下功能:

//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,依此類推,我需要將此信息存儲在數組中。

我的功能出了什么問題?

您可以讓SQL為您做更多的工作嗎?

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

這將為您提供每個用戶級別的所有計數。

$users = array();

應該在for循環中。 但是如果將sql查詢更改為:

"SELECT COUNT(*) FROM users WHERE user_level = '$i'"

或者如果使用GROUP BY子句會更好

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM