首页 > 解决方案 > 计数和输出特定单词在数据库行中

问题描述

 id | username | pass | reply         | date    |
 0  | user1    | MD5  | Access-Accept | date 1  | 
 1  | user2    | MD5  | Access-Reject | date 2  |
 2  | user3    | MD5  | Access-Reject | date 3  | 
 3  | user4    | MD5  | Access-Accept | date 4  |  

试图弄清楚如何计算和显示/输出表中的所有“Access-Accept”和“Access-Reject”。

这是我卡住的地方,当前脚本正在计算所有行,

 <?php
 // start connection 
 $conn = new mysqli($servername, $username, $password, $dbname);
 $sql = 'SELECT * FROM table_1';
 if (mysqli_query($conn, $sql)) {
 echo "";
 } else {
 echo "Error: " . $sql . "<br>" . mysqli_error($conn);
 }
 $result = mysqli_query($conn,$sql);
 $totalsum = mysqli_num_rows($result);
 mysqli_close($con);
 ?>

和html

<?php include 'count-words.php';?>
 <p>Total access: <?=$totalsum?> Total Sessions!</div></p>

在社区帮助下前进,并注意脚本确实输出了我想要实现的目标。

 mysql> SELECT reply, COUNT(reply) FROM radpostauth GROUP BY reply;
 +---------------+--------------+
 | reply         | COUNT(reply) |
 +---------------+--------------+
 | Access-Accept |          573 |
 | Access-Reject |          233 |
 +---------------+--------------+
 2 rows in set (0.00 sec)

因为 php 和 sql 它不是我的强项,所以我需要一些帮助来输出两行的结果,例如:

 <?=$accept?>  
 <?=$reject?>

标签: phpmysql

解决方案


SELECT reply,COUNT(reply) FROM table GROUP by reply

只是为了解释:

count(reply)group by为您提供列回复中每个单独值的计数。因此 Access-Accept 和 Access-Reject 将被计算在内,以您的示例为例,您将收到:

   Reply         Count(Reply)
Access-Accept       2
Access-Reject       2

正是您似乎在寻找的东西。

你也可以在AS Reply Count之后COUNT(reply)输出回复计数而不是计数(回复)。


推荐阅读