查询小于和大于时间

时间:2012-12-04 09:26:17

标签: php mysql wordpress time

请大家帮我检查一下我的语法是否正确。我使用这段代码没有任何错误,但我只是想对我是否正确的做法几乎没有意见。

我正在使用多站点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());
}

1 个答案:

答案 0 :(得分: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应该在一周前和一天之前,那么它必须大于一周前(&gt;现在 - 604800)并且不到一天前(&lt; now - 86400)