php - 我怎样才能简化这个 php mysql count 代码并减少查询?

标签 php mysql

我有包含 8 个不同产品类别的数据库可供下载。

pic, app, ebo, tem, des, cod, mus, cat

我想统计客户下载的产品总数以及每个产品类别的下载总数。 类别产品每日最大下载次数为 3。 当用户登录时应该看到剩余的下载量。 这是工作代码

$query = "SELECT COUNT(*) as sum FROM service_downloads where client_id like '$client'";
$result = mysql_query($query) or die(mysql_error()); 
// Print out result
while($row = mysql_fetch_array($result))
{
echo "You have downloaded". $row['sum'] ." products.";
echo "<br />";
}
$query = "SELECT COUNT(*) as sum FROM service_downloads where client_id like '$client' and product like 'pic'";
$result = mysql_query($query) or die(mysql_error());

// Print out result
while($row = mysql_fetch_array($result))
{
echo "". $row['sum'] ." downloaded pictures";
$leftovers = 3 - $row['sum'];
echo " $leftovers pictures remain for download";
echo "<br />";
}
$query = "SELECT COUNT(*) as sum FROM service_downloads where client_id like '$client' and product like 'app'";
$result = mysql_query($query) or die(mysql_error());

// Print out result
while($row = mysql_fetch_array($result))
{
echo "". $row['sum'] ."downloaded applications";
$leftovers = 3 - $row['sum'];
echo " $leftovers applications remain for download.";
echo "<br />";
}

$query = "SELECT CO.... This procedure repeat eight times for different product category.

结果

You have downloaded 12 products.

3 downloaded pictures 0 pictures remain for download.

1 downloaded applications 2 applications remain for download.

3 downl.......

最佳答案

您可以使用 GROUP BY 语句对结果进行分组。

SELECT   COUNT(`Product`) AS `Sum`, `Product`
FROM     `service_downloads`
WHERE    `client_id` = '<client_id>'
GROUP BY `Product`

然后您可以使用一个 while 语句来循环遍历每个产品:

// Print out result
while($row = mysql_fetch_array($result))
{
    echo "". $row['Sum'] ."downloaded " . $row['Product'];
    $leftovers = 3 - $row['Sum'];
    echo " $leftovers " . $row['Product'] . " remain for download.";
    echo "<br />";
}

关于php - 我怎样才能简化这个 php mysql count 代码并减少查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22385503/

相关文章:

mysql - 如何按文本的第一个字母分组

php - 如何将搜索结果拆分为页面?

php - 带有电子邮件验证的注册表单无法发送邮件

php - CodeIgniter 从数据库中获取最近输入的行并在 Controller 中使用它

php - fopen 权限被拒绝

javascript - JSON 有时未定义 - 我该如何检查?

php - 通过循环将值插入数据库

php - 如何使用 PHP 创建到同一主机的多个持久套接字连接 TCP/IP

php - Magento:如果小部件参数发生变化,则从 block /整页缓存中刷新小部件

ruby-on-rails - 如何使用/加入rails 3修改复杂的sql查询