从MySQL时间戳获取最后查看的项目

时间:2014-01-11 01:39:38

标签: php 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++;
    } 
}

2 个答案:

答案 0 :(得分:2)

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

这应该是最后查看的页面。

答案 1 :(得分: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