2014-02-28 434 views
-1

我有这样的查询索引我的图片,并通过普及命令他们,但我不能让用户选择的时间间隔的原因有什么毛病查询:MySQL查询日期错误

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 Error (1064): You have an error in your SQL syntax;..... to use near 'DAYS) AND NOW()) AS likes, (SELECT SUM(views) FROM views WHERE id= I.id A

+2

什么是你的错误? –

+0

@TarynEast SQL错误(1064):您的SQL语法有错误; .....在'DAYS'和NOW())之间使用AS'likes',(SELECT SUM('views')FROM'views 'WHERE'id' = I.id A' –

+3

'INTERVAL 7 DAY',not'DAYS'。 – Sammitch

回答

1

用于指定天的间隔正确的语法使用DAY关键字。你已经使用了DAYS在:

BETWEEN SUBDATE(CURDATE(), INTERVAL 7 DAYS) AND NOW() 

和:

> CURDATE() - INTERVAL 31 DAYS