Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php-获取上周的数据(金额)_Php_Mysql_Sql - Fatal编程技术网

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

php-获取上周的数据(金额),php,mysql,sql,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 transact

我有一个名为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,0

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

示例:如果有人购买了3件物品,但第一件物品的价格为60美元,那么它将打印出60,60,60,60,60,60,60

有人能帮我选择每天的总金额并打印出来吗?

学习后编辑的时间是unix时间戳,单位为db

当前,您正在尝试获取给定时间而不是日期的记录。因为在db上有一个unix时间戳字段time,所以需要给出一个间隔。此外,由于一天可能有多次购买,您需要将给定日期的所有金额相加

...
$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;
}
...

发布一些示例数据和表结构数据库中的时间字段是unix时间戳。如果您无法获取时间=:time的记录,则需要指定一个间隔。让我更新我的答案。