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());
}
4

1 回答 1

0

根据http://codex.wordpress.org/Database_Description#Table:_wp_blogs, blog_id 列是 int ,因此您不应将值括在引号中

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

public,spam和 也是如此deleted

除此之外,这不是一个真正的问题,我无法发现任何语法错误。但与您的标题相反,您没有在查询中使用时间。

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)。

于 2012-12-04T09:37:34.123 回答