php - 如何使用 array_count_values() 和 mySQL 来统计值的出现次数

标签 php sql mysql database arrays

我有一个 mySQL 数据库表,其中有一列对应于已投票的图像。值为 001.jpg - 013.jpg。我需要弄清楚每张图片被投票了多少次。我尝试了以下代码,得到了 002.jpg 的计数,但没有其他图像。目前至少有 25 票。这是我尝试使用的代码:

<?php
$db = mysql_connect("xxx", "xxx", "xxx");
mysql_select_db("club",$db);
$q = mysql_query("SELECT image FROM january");
$array = mysql_fetch_array($q);
$results = array_count_values($array);
         for each
         while (list ($key,$val) = each($results)) {
         echo "$key -> $val <br>";
         }
?>

我知道 array_count_values() 是计算每次投票出现的方法,但我能找到的所有示例都没有显示如何将其与 mySQL 配对。任何帮助将不胜感激!

最佳答案

您需要 GROUP BY 和 COUNT():

SELECT image, COUNT(*) as votes FROM january GROUP BY image

这将返回两列:1 列用于图像,1 列用于该图像的投票数:

image     votes
001.jpg   1
002.jpg   32
...

完整代码:

$db = mysql_connect("xxx", "xxx", "xxx");
mysql_select_db("club",$db);
$q = mysql_query("SELECT image, COUNT(*) as votes FROM january GROUP BY image");

$votes = array();
while ($row = mysql_fetch_assoc($q)) {
    $votes[$row['image']] = $row['votes'];
}

// $votes is an array of 'image' => 'votes'

foreach($votes as $image => $count) {
    echo "$image: $count<br>";
}

关于php - 如何使用 array_count_values() 和 mySQL 来统计值的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4867846/

相关文章:

sql - MySQL alter table 中 RENAME 比 DROP+ADD 更快

mysql - 如何使用 Hibernate session 获取数据库表中的列列表(按顺序)?

php - robots.txt 模式匹配不起作用

php - 选中 Blob Image 并将其用作背景

php - 使用主键获取行中的重复条目

使用 Sequelize CLI 进行 MySql 迁移。无法添加外键约束

mysql - 查询文件路径的部分内容

php - 请帮助,上传 csv 文件时出现错误

SQL 变量与 xml 的连接

PHP MySQL - IN/ALL/ANY 子查询中的列 'id' 不明确