我试图根据用户发布的帖子数量给他们排名。我创建了一个数据库,其中包含包含“初学者、新手、中级……到掌握”的rankName 行和包含一些数字的最小行。我尝试将帖子数量 ($qtyPosts) 与最小行数进行比较。
例如:当用户有 9 个帖子时,他会获得新手排名(至少有 5 个帖子)。 这是我为此编写的代码。
PHP 代码
// calculate number of posts from user
$rowsPosts = $user->getQuantityOfPosts($userID);
$qtyPosts = 0;
foreach ($rowsPosts as $q) {
$qtyPosts++;
}
//status
$conn = db::getInstance();
$rank = "";
$statementRank = $conn->prepare("SELECT * FROM rank WHERE rank.minimum >= $qtyPosts");
$statementRank->execute();
while($row = $statementRank->fetch(PDO::FETCH_ASSOC) ){
$rank = $row['rankName'];
}
HTML 代码
<h3>Status: <?php echo $rank; ?></h3>
但是,它没有发布正确的排名,而是发布了最新的排名,“master”。有人有什么想法吗?
最佳答案
考虑您的 WHERE
子句:
WHERE rank.minimum >= $qtyPosts
如果用户处于最低排名,则所有排名将是>=
该用户的帖子计数。
您可以保持相同的逻辑,但只需添加订单和限制。像这样的事情:
WHERE rank.minimum >= $qtyPosts ORDER BY rank.minimum LIMIT 1
这会将排名从最低到最高排序,并仅选择第一个。
关于php - 使用运算符从我的数据库中获取特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43853406/