2014-03-28 77 views
0
在自定义的select语句变量

我定制的select语句:包括WordPress的

$querystr = " 
    SELECT $wpdb->posts.* 
    FROM $wpdb->posts, $wpdb->comments 
    WHERE $wpdb->posts.ID = $wpdb->comments.comment_post_ID 
    AND $wpdb->posts.post_status = 'publish' 
    AND $wpdb->posts.post_type = 'post' 
    GROUP BY $wpdb->posts.ID 
    ORDER BY comment_count DESC 
"; 

我的目的是限制结果返回到一组特定的岗位作者。

我在一个变量$user_ids中有一个WordPress发布作者用户ID的数组。

我想过加入以下到我的SELECT语句,但我敢肯定,下面的语法是不这样做的正确方法:

AND $wpdb->posts.post_author = $user_ids 

希望有人可以帮告诉我正确的方式做这个?

+0

是'$ user_ids'数组或一个字符串?如果是数组,则需要将它内爆并使其成为“IN” – MSadura

+0

$ user_ids是值的数组 – henrywright

回答

0

如果$user_ids是昏迷分隔值,那么你可以做到这一点

AND $wpdb->posts.post_author in ($user_ids) 

如果$user_ids是一个数组,然后使用此:

AND $wpdb->posts.post_author in (implode(',', $user_ids)) 
+0

'$ user_ids'是当前值的数组。我应该这样做'implode(',',$ user_ids)'首先得到逗号分隔值吗? – henrywright

+0

是的,你可以做到这一点。 –

+0

编辑我的答案。 –

1

首先,你应该做一个字符串:

$user_ids_string = implode(',',$user_ids)

然后你的语法无线会是:

AND $wpdb->posts.post_author in ($user_ids_string)

注意:如果您的ID是不是整数,你也应该用引号将它们包装''

+0

感谢MarkS +1 – henrywright