存储返回的数据库查询中的数组并在新查询中使用该数组

时间:2015-09-03 作者:Grant

我目前正在将结果存储在db表中的一个变量中,如下所示:

$followed = $wpdb->get_results("SELECT user_id1 FROM wp_um_followers WHERE user_id2 = 1", ARRAY_A);
这将返回如下数组:

Array ( [0] => Array ( [user_id1] => 144 ) [1] => Array ( [user_id1] => 50 ) [2] => Array ( [user_id1] => 42 ) [3] => Array ( [user_id1] => 829 ) [4] => Array ( [user_id1] => 826 ) [5] => Array ( [user_id1] => 822 ) [6] => Array ( [user_id1] => 823 ) [7] => Array ( [user_id1] => 821 ) [8] => Array ( [user_id1] => 820 ) [9] => Array ( [user_id1] => 819 ) [10] => Array ( [user_id1] => 818 ) [11] => Array ( [user_id1] => 816 ) [12] => Array ( [user_id1] => 817 ) [13] => Array ( [user_id1] => 814 ) [14] => Array ( [user_id1] => 815 ) [15] => Array ( [user_id1] => 15 ) [16] => Array ( [user_id1] => 93 ) [17] => Array ( [user_id1] => 844 ) ) 
现在,我想使用上面数组中的user\\u id1值作为自定义帖子类型上的多作者查询的值来设置一个新查询。

类似这样:

$get_these_posts = array( \'post_type\' => \'stream\', \'post_status\' => \'publish\', \'posts_per_page\' => \'10\', \'paged\' => $paged, ( array( \'author__in\' => array( $followed ) ) ) );
它应该只返回出现在$followed变量中的原始查询中的作者的帖子。

但这显然不起作用,因为我没有针对阵列的正确部分[user\\u id1],而且我不知道如何定位。

我甚至不确定第二个查询是否设置正确,或者是否确实可以用这种方式设置?

任何帮助都将不胜感激。

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

你需要通过author__in 作为一个数组,但这不是您要做的:( array( \'author__in\' => array( $followed ) ) ). 您正在创建一组奇数的嵌套数组。WP_Query 都不知道该怎么办。简化版应该可以:

$followed = $wpdb->get_col("
  SELECT user_id1 
  FROM wp_um_followers 
  WHERE user_id2 = 1"
);

$get_these_posts = array( 
  \'post_type\' => \'stream\', 
  \'post_status\' => \'publish\', 
  \'posts_per_page\' => \'10\', 
  \'paged\' => $paged, 
  \'author__in\' => $followed
);
注意我使用的get_col(). 这将返回一个简单的ID数组。