请大家帮我检查一下我的语法是否正确。我使用这段代码没有任何错误,但我只是想对我是否正确的做法几乎没有意见。
我正在使用多站点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());
}
答案 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) ...
列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
应该在一周前和一天之前,那么它必须大于一周前(&gt;现在 - 604800)并且不到一天前(&lt; now - 86400)