[英]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.