Как использовать array_count_values ​​() и mySQL для подсчета появления значений - PullRequest
1 голос
/ 01 февраля 2011

У меня есть таблица базы данных 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.Любая помощь будет оценена!

1 Ответ

3 голосов
/ 01 февраля 2011

Вам нужны 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>";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...