1

我正在对我们的客户订单数据库进行查询,以查看上周的销售额。查询如下所示:

select
distinct day(from_unixtime(customerorder.datetime)) as day,
count(distinct customerorder.customerorderid) as count_totalorders,
count(distinct customerorderpos.itemid) as count_differentitems,
sum(customerorderpos.quantity_ordered) as quantity_ordered,
sum(customerorderpos.itemsubtotal) as item_subtotal,
sum(customerorderpos.pricechangetotal) as item_pricechangetotal,
sum(customerorderpos.itemtotal) as item_total,
sum(customerorderpos.purchase_price * customerorderpos.quantity_ordered) as item_purchasepricetotal,
sum(distinct cart_discounttotal) as total_discount,
sum(customerorderpos.itemtotal - (customerorderpos.purchase_price * customerorderpos.quantity_ordered) - (select distinct cart_discounttotal)) as item_earningstotal,
sum(distinct cart_total_shipping) as total_shipping,
sum(distinct cart_total_tax) as total_tax,
sum(distinct cart_total_complete) as total_complete
from customerorder
inner join customerorderpos on customerorder.customerorderid = customerorderpos.customerorderid
where
customerorder.datetime >= 1351494000 and
customerorder.status_cancelled = "0"
group by day(from_unixtime(customerorder.datetime))
order by customerorder.datetime

当我在 PhpMyAdmin 中输入查询时工作正常并显示最近 7 天的订单。但是当我们在自己的软件中运行它时,它会报错。

$result = $db->query($query);
while ($row = $result->fetch_assoc()){

这显示:“致命错误:在非对象上调用成员函数 fetch_assoc()”

但是....如果我从查询中取出“where customerorder.datetime >= 1351494000”,它工作正常。换句话说,查询可以完美运行,直到我想将其限制在特定时间。Customerorder.datetime 是一个带有时间戳的 int(11) 列。

任何想法可能是什么问题?

谢谢你的帮助!

4

2 回答 2

0

我认为这里的问题在于这部分

      customerorder.datetime >= 1351494000

让它像这样:

      customerorder.datetime >= '1351494000'

您必须将其封装起来才能使其正常工作。希望这有帮助。

于 2012-11-06T01:25:43.653 回答
0

谢谢你的帮助。我发现了问题,(当然)是我自己的错误!实际的 SQL 语法很好,我只是在我们自己的软件中遇到了一个错误($query 正在运行,通过一个清理函数替换了 ">=" 字符,使查询无效)。

很抱歉浪费您的时间:(

于 2012-11-06T15:13:15.810 回答