2012-10-05 113 views
-1

我有一個上傳腳本,當廣告上傳時需要時間戳,我想創建一個腳本,根據時間戳回顯最近10次上傳。php mysql根據時間戳echo結果

我不知道如何做到這一點,任何幫助非常感謝!

<?php 

$now = date("Y-m-d H:i:s"); 

echo $now; 

$sql = "SELECT * FROM people WHERE posttime < $now LIMIT 0, 10"; 

    $q  = $conn->prepare($sql) or die("failed!"); 
    // Bind the params to the placeholders 
    $q->execute(); 


?> 

時間戳如下:

2012-10-05 14:40:21 
+0

而在什麼問題是? –

+0

還要檢查posttime字段是DATETIME類型還是類似數據庫中的類型,而不僅僅是文本類型。 – Cray

+1

請注意,如果正在使用預準備語句,則應該綁定參數。相反,你已經直接插入了變量'$ now'(我意識到這不是來自用戶輸入),並且在任何情況下它都應該被單引號爲DATETIME文字。 –

回答

2

更好的是使用MySQL條件:

SELECT * FROM people WHERE posttime < NOW() LIMIT 0, 10 

但在你的情況posttime總是比目前更低,我認爲:)在此案例我認爲正確的查詢是:

SELECT * FROM people ORDER BY posttime DESC LIMIT 0, 10 

但是,如果你比較時並不總是當前時間,比添加條件:

SELECT * FROM people WHERE posttime < $someNotCurrentTimePHPVar ORDER BY posttime DESC LIMIT 0, 10 
1

您需要order by條款

SELECT * 
FROM people 
WHERE posttime < $now 
order by posttime desc 
LIMIT 0, 10 
0

desc爲了添加order by子句中查詢,這樣,

$sql = "SELECT * FROM people WHERE posttime < $now order by posttime desc LIMIT 0, 10";