我有一个数据库,可以在有人下载文件时存储信息。每当他们下载文件时(根据客户要求),它都会捕获电子邮件的名称和日期戳。

我希望能够连接到数据库并添加所有重复的条目。因此,如果通过电子邮件a@a.com有10条结果,它将打印“ a@a.com; 10次下载”。

到目前为止,这是我尝试过的。但是它在页面上超时:

function userFile($id) // $id = File ID
 {
    $order = "SELECT * FROM downloads WHERE dl_id='$id'";
    $result = mysql_query($order);
    while($row=mysql_fetch_array($result)){
        $email = $row['email'];
        $order = "SELECT * FROM downloads WHERE email='$email'";
        $result = mysql_query($order);
        $num_rows = mysql_num_rows($result);
        print $row['email'] . ' ' . $num_rows;
    }
 }


必须有一个更简单或更完善的方法来做到这一点。任何帮助表示赞赏!

最佳答案

让MySQL为您完成工作。如果我正确理解您的要求,则需要这样的查询:

SELECT email, COUNT(*) AS num_rows
FROM downloads
WHERE dl_id='$id'
GROUP BY email


然后,您的PHP代码将如下所示:

function userFile($id) // $id = File ID
 {
    $order = "SELECT email, COUNT(*) AS `num_rows` FROM downloads WHERE dl_id='$id' GROUP BY email";
    $result = mysql_query($order);
    while($row=mysql_fetch_array($result)){
        $email = $row['email'];
        $num_rows = $row['num_rows'];
        print $email . ' ' . $num_rows;
    }
 }


我今天没有PHP在这里,所以请注意,这是未经测试的。

10-05 21:18
查看更多