2012-12-04 4 views
0

내 구문이 올바른지 확인해 주시겠습니까? 이 코드를 사용하여 오류가 발생하지는 않지만 제대로 수행하고 있는지 여부에 대한 의견이 거의 없습니다.시간보다 작고 큰 쿼리

/* 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 그래서 당신은 열 public, spamdeleted에 대한

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

같은 따옴표로 값을 둘러싸는 안된다.

실제 문제는 아니지만 구문 오류를 발견 할 수 없습니다. 제목과는 달리, 검색어에 시간을 사용하지 마십시오. $featured_time 동시에 > now - 86400< now-604800을 할 수 없기 때문에 if() 성명에

,이 사실이 될하지 않습니다. 만약 당신이, 당신의 의견에서와 조건을 원하는 말한다면 $featured_time는 일주일 전에 하루 사이 여야 경우 time() - 라인에

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

이 다소 그래서이

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

처럼 보이는 1 주일 전 (> 지금 - 604800) 일 전 (< - 86400)보다 작아야합니다.

+0

감사합니다. – DFreeman

+0

@DFreeman 방금 시간이 걸렸습니다. 업데이트 된 답변을 참조하십시오. –

+0

그 말이 맞다면 (featured_time time() - 604800 (일주일 이상)이 맞습니까? 그보다 1 주일 이상이지만 1 주일 이상되지 않은 다른 방법이 있습니까? – DFreeman

관련 문제