我有一个数据库,可以在有人下载文件时存储信息。每当他们下载文件时(根据客户要求),它都会捕获电子邮件的名称和日期戳。
我希望能够连接到数据库并添加所有重复的条目。因此,如果通过电子邮件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在这里,所以请注意,这是未经测试的。