您想要的SQL是:
$sql = "
SELECT DISTINCT post_id
FROM $wpdb->posts, $wpdb->postmeta
where $wpdb->postmeta.meta_value = \'2015/06/03\'";
$results =$wpdb->get_results($sql);
但没有理由让
$wpdb->posts
表,因为
post_id
值为a
$wpdb->postmeta
表列。
$sql = "
SELECT DISTINCT post_id
$wpdb->postmeta
where $wpdb->postmeta.meta_value = \'2015/06/03\'";
$results =$wpdb->get_col($sql);
请注意,我已更改
$wpdb->get_results
到
wpdb->get_col
因为您只返回一列数据。结果出来后需要更少的操作。
您也可以跳过DISTINCT
并使用PHParray_unique()
:
$sql = "
SELECT post_id
$wpdb->postmeta
where $wpdb->postmeta.meta_value = \'2015/06/03\'";
$results =$wpdb->get_col($sql);
$results = array_unique($results);
然而,更正确的方法是
WP_Query
. 我本想提出这个建议,但后来注意到您并不是在寻找
meta_key
但我们正在搜索整张表。
That is going to cause trouble eventually. 假设某个插件将数据存储在
$wpdb->postmeta
具有该日期格式的表?然后,您的代码也将检索这些值,这肯定不是预期的行为。有人甚至可以从stock post编辑面板中输入这样的日期作为自定义字段。您应该指定一个键,类似于:
$args = array(
\'fields\' = \'ids\',
\'ignore_sticky_posts\' => true,
\'meta_query\' => array(
array(
\'key\' => \'my_date_key\',
\'value\' => \'2015/06/03\',
)
)
);
$pids = new WP_Query($args);