2012-12-04 68 views
0

請大家幫我檢查我的語法是否正確。我沒有使用這段代碼得到任何錯誤,但我只是想對我是否正確地做出正確的幾點意見。用小於和大於時間的查詢

我使用的是多站點WordPress安裝,我檢查,看看是否該功能的博客是不是每天超過一個星期舊舊的,但少:

/* Work out blog of the day */ 
$featured_id = get_option('featured_blog'); # Current ID 
$featured_time = get_option('featured_time'); # Current Time 

if($featured_time > time()-86400 && $featured_time < time()-604800) // more than 1 Day ago but less than a week 
{ 
    $query = "SELECT blog_id FROM `wp_blogs` WHERE public = '1' and archived = '0' and spam = '0' and deleted = '0' AND blog_id NOT IN ('".$featured_id."', '1','27') ORDER BY rand() limit 1"; 
    $featured_id = $wpdb->get_var($query); 
    update_option('featured_blog', $featured_id); 
    update_option('featured_time', time()); 
} 
+2

如果沒有錯誤,你做得很對。爲了確定它是否好,你可以考慮系統時間和數據庫時間之間的差異。 –

+0

你搖滾!謝謝 ! – DFreeman

回答

0

http://codex.wordpress.org/Database_Description#Table:_wp_blogs,列blog_id爲int,所以你不應該在報價

select ... where ... and blog_id NOT IN (".$featured_id.", 1,27) ... 

同爲列publicspamdeleted請將這些值。

除此之外,這不是一個真正的問題,我不能發現任何語法錯誤。 但與您的標題相反,您不會在查詢中使用該時間。

if()聲明,這永遠不會成爲真正的,因爲$featured_time不能> now - 86400< now-604800在同一時間。如果你想將條件進行您的評論,說

if ($featured_time < time()-86400 && $featured_time > time()-604800) 

在一個time()直插這看上去或多或少像這樣

0   now-604800 now-86400  1354618129 
+----------+------------+--------------+ 
|   |   |    | 
1.1.1970 a week ago 24 hours ago now 

所以,如果$featured_time應該是一個星期前,一天之間之前,它必須大於一週前(>現在 - 604800)並且不到一天前(<現在 - 86400)。

+0

感謝您的提升! – DFreeman

+0

@DFreeman它只是花了一些時間,請看到更新的答案。 –

+0

如果我讀到正確的,你說如果(featured_time time() - 604800(大於一週)是這樣嗎?因爲我認爲它是正確的反過來說,它比一天更老,但不超過一週? – DFreeman