2014-01-11 75 views
0

我正在尝试从MySQL数据库,其构造为跟着过去看页面观看项:获得最后从MySQL时间戳

articles table

id | title | content | created 
---------------------------------------- 
    1 | title-1 | info-1 | 1386478352 
    2 | title-2 | info-2 | 1386532855 
    3 | title-3 | info-3 | 1386637325 
    4 | title-4 | info-4 | 1386812249 
    5 | title-5 | info-5 | 1387094028 

我想获得最后的浏览页面,不知道多少时间会是足够的,因为每次网站页面刷新此功能将被称为..但是,这是我已经尝试过,但它不会返回任何东西。

"SELECT * FROM articles WHERE TIMESTAMPDIFF(MINUTE, created,NOW()) < 10 LIMIT 2" 

但正如我所说的,它不返回单个数据。这就是我试图打印信息的方式。

$loopOne = 0; 
foreach($articleLastView as $recent) 
{ 
    $recent_id   = $recent['id']; 
    $recent_title  = $recent['title']; 
    $recent_created  = $recent['created']; 

    if ($loopOne == 0) 
    { 
     echo 'I print info here if result is the first'; 
    $loopOne++; 
    } 
    else if($loopOne == 1) 
    { 
     echo 'I print info here if result is the second'; 
    $loopOne++; 
    } 
} 
+1

也许我失去了一些东西,但列'created'是如何与最后一次观看的时间?我会想象该字段将包含文章创建时间的时间戳... – jeroen

+0

您提供的数据的期望结果是什么? –

回答

2
"SELECT * FROM `articles` ORDER BY `created` DESC LIMIT 1" 

这应该让最后一次查看的页面。

+0

谢谢你的答案,但这不会完成我所需要的,因为我正在尝试检索上次浏览的文章。也许我应该以不同的方式提出这个问题,并改用page_views,因为那样会更好。 – iBrazilian2

+0

对不起。我不知道为什么,但我假设时间戳是该文章最后一次被查看的时间。我应该读完整件事情。 – 2014-01-11 01:57:40

0

我认为你的函数不起作用的原因是当函数需要两个日期时间表达式时,你传入一个UNIX时间戳。

按照Doc

TIMESTAMPDIFF(单元,datetime_expr1,datetime_expr2)

返回datetime_expr2 - datetime_expr1,其中datetime_expr1和 datetime_expr2是日期或日期时间表达式。

您的第一个表达式是UNIX时间戳,但您的NOW()表达式是日期时间。

尝试将您的UNIX时间戳转换为日期时间格式。

例如:

SELECT * 
FROM articles 
WHERE TIMESTAMPDIFF(MINUTE, FROM_UNIXTIME(created), NOW()) < 10 
LIMIT 2