2014-01-11 73 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