【发布时间】:2014-02-28 00:13:19
【问题描述】:
我有这个查询索引我的图像并按受欢迎程度排序,但我不能让用户选择间隔,因为查询有问题:
switch($Data['data']){
case 'daily':$QueryDate='=CURDATE()';break;
case 'weekly':$QueryDate=' BETWEEN SUBDATE(CURDATE(), INTERVAL 7 DAYS) AND NOW()';break;
case 'monthly':$QueryDate='>CURDATE() - INTERVAL 31 DAYS';break;
default: Core::redirect('image/browse/daily/1');break;
}
$IMGDB = new Database('images');
$query = "SELECT *, (derived.`likes` * 2 + derived.`views`) as `popularity` from
(SELECT *,
(SELECT COUNT(*) FROM `likes` WHERE `like`=I.id AND `date`".$QueryDate.") AS `likes`,
(SELECT SUM(`views`) FROM `views` WHERE `id`=I.id AND `date`".$QueryDate.") AS `views`
FROM images AS I
) AS derived
where 1 ORDER BY `popularity` DESC ";
只有日常案例有效。
这是错误:
SQL 错误 (1064): 您的 SQL 语法有错误;..... 使用 'DAYS) AND NOW()) AS likes, (SELECT SUM(views) FROM views WHERE id= I.编号A
【问题讨论】:
-
你得到什么错误?
-
@TarynEast SQL 错误 (1064): 您的 SQL 语法有错误;..... 使用 'DAYS) AND NOW()) AS
likes, (SELECT SUM(views) FROMviewsWHEREid= I.id A' -
这是
INTERVAL 7 DAY,而不是DAYS。 -
@Sammitch 创建一个答案,以便我可以选择它作为解决方案。
-
而不是
>CURDATE() - INTERVAL 31 DAY,您可能想使用>CURDATE() - INTERVAL 1 MONTH,只是一个建议:)