PHP-Mysql查询:按天显示订单数量并存储在变量中
我有一张这样结构的桌子:PHP-Mysql查询:按天显示订单数量并存储在变量中,php,mysql,Php,Mysql,我有一张这样结构的桌子: table name: customer_history id| orders | order_date (timestamp) | status | -------------------------------------------------- 1| 1 | 2012-05-29 13:11:59 | active | 2| 1 | 2012-05-29 13:11:59 | active |
table name: customer_history
id| orders | order_date (timestamp) | status |
--------------------------------------------------
1| 1 | 2012-05-29 13:11:59 | active |
2| 1 | 2012-05-29 13:11:59 | active |
3| 1 | 2012-05-30 13:11:59 | canceled |
4| 1 | 2012-05-31 13:11:59 | trialing |
我需要查询数据库并计算总订单数,其中状态!=取消,对于每一天,返回一个日历月,并为每个每日总计分配一个唯一变量
昨天的订单总额大约是$day-1,两天前是$day-2,等等
编辑下面的答案
$query = "SELECT
COUNT(*) AS number,
DATE(order_date) AS order_day
FROM
customer_history
WHERE
status <> 'canceled'
GROUP BY
order_day
ORDER BY
order_date
DESC
LIMIT 31";
$result = mysql_query($query) or die(mysql_error());
$i = 1;
$days = array();
while($row = mysql_fetch_assoc($result)) {
$days[$i] = $row;
$i++;
}
echo $days[1]['number'];
echo $days[2]['number'];
echo $days[3]['number'];
echo $days[4]['number'];
echo $days[5]['number'];
echo $days[6]['number'];
然后就把结果循环一下。第一个是今天,第二个是昨天,第三个是前天,等等
编辑
包括循环/变量:
<?php
$query = "SELECT
COUNT(*) AS number,
DATE(order_date) AS order_day
FROM
orders
WHERE
status <> 'canceled'
GROUP BY
order_day
ORDER BY
order_date
DESC
LIMIT 31";
$result = mysql_query($query);
$i = 1;
$days = array();
while($row = mysql_fetch_assoc($query)
{
$days[$i] = $row;
$i++;
}
?>
echo$days[1]['number']为您提供今天的订单数量,$days[2]['number']为您提供昨天的订单数量,等等。您可以通过echo$days[x]['order\u day']输出实际日期。尝试按订单日期分组的查询
循环和设置变量是给我带来麻烦的主要事情。你能详细说明一下吗?我第一次使用mysql…我在哪里指定表名customer_history?等等,也许我没有得到您的数据模型。消费者历史记录表是关于什么的?是否有普通订单表?嗯。每个客户都有一个id、订单、状态和订单日期。我每天都在试着得到很多订单。该表恰好被称为customer_history。也许我们可以使用skype?在这种情况下,尝试将“订单”更改为“客户历史记录”。
<?php
$query = "SELECT
COUNT(*) AS number,
DATE(order_date) AS order_day
FROM
orders
WHERE
status <> 'canceled'
GROUP BY
order_day
ORDER BY
order_date
DESC
LIMIT 31";
$result = mysql_query($query);
$i = 1;
$days = array();
while($row = mysql_fetch_assoc($query)
{
$days[$i] = $row;
$i++;
}
?>
SELECT COUNT(*) AS number, DATE(order_date) AS order_day
FROM orders WHERE status != 'canceled'
GROUP BY order_date ORDER BY order_date DESC