php - 从上周获取数据(金额)

时间:2014-03-27 07:56:06

标签: php mysql sql

我有一个名为" transactions"的表,在那里我每次有人在我的网站上购买时都会输入用户ID,购买类型和金额。

我想在过去7天内向每位用户显示这些统计信息。

目前,我有这个:

$data = array();
for($x = 0; $x <= 6; $x++){ 
$time = time()-($x*86400);
$date = date("Y/m/d", time()-($x*86400));
$queryE = $dbh->prepare("SELECT * FROM transactions WHERE user=:username AND time=:time AND(type='upgrade' OR type='addrbl' OR type='clicks' OR type='banner') ");
$queryE->bindParam(":username",$userdata['id']);
$queryE->bindParam(":time",$time);
$queryE->execute();

$row=$queryE->fetch();
$data[] = ($row['amount'] > 0 ? $row['amount'] : 0);
$dates[] = date("Y/m/d", time()-($x*86400));   


}
$days = array('Today');
for ($i=0; $i<7;$i++)
{
  $days[$i] = date('d-m', strtotime('-'.($i+0).' day'));
}

然后打印出来,我有这个:

echo implode(',', $data);

虽然上面的代码只打印出0,0,0,0,0,0,0

如果我从查询中删除$time,那么它只会选择第一行并打印出每天的内容。

示例:如果有人购买了3件东西,但第一件事花了60美元,那么它将打印出来60,60,60,60,60,60,60

有人可以帮助我如何从每天选择金额总和并打印出来吗?

1 个答案:

答案 0 :(得分:0)

在学习time后编辑,是db中的unix时间戳

目前,您正在尝试获取给定时间(不是日期)的记录。由于db上有unix时间戳字段time,因此需要给出一个间隔。此外,由于某一天可能会有多次购买,因此您需要在指定日期SUM全部amounts

...
$begin = strtotime('today midnight');
for($x = 0; $x <= 6; $x++) {
  $end = $begin + 86400;
  $queryE = $dbh->prepare("SELECT SUM(amount) AS total FROM transactions WHERE user=:username AND time > :begin AND time <= :end AND(type='upgrade' OR type='addrbl' OR type='clicks' OR type='banner') ");
  $queryE->bindParam(":username",$userdata['id']);
  $queryE->bindParam(":begin", $begin);
  $queryE->bindParam(":end", $end);
  $queryE->execute();

  $row=$queryE->fetch();
  $data[] = $row['total'];
  $dates[] = date("Y/m/d", $begin);
  $begin -= 86400;
}
...