对wp数据库的MySQL查询帮助不大

时间:2013-05-30 作者:Ronnieinspain

@t31os 对以下内容做出了非常有益的回应:

getting all values for a custom field key (cross-post) 通过提供此功能

if ( ! function_exists( \'get_meta_values\' ) ) {
function get_meta_values( $key = \'\', $type = \'post\', $status = \'publish\' ) {
    global $wpdb;
    if( empty( $key ) )
        return;
    $r = $wpdb->get_col( $wpdb->prepare( "
        SELECT pm.meta_value FROM {$wpdb->postmeta} pm
        LEFT JOIN {$wpdb->posts} p ON p.ID = pm.post_id
        WHERE pm.meta_key = \'%s\' 
        AND p.post_status = \'%s\' 
        AND p.post_type = \'%s\'
    ", $key, $status, $type ) );
    return $r;
}
}
(略微调整)

我需要调整此函数以检索不是一列而是两列;meta_valuepost_id, 都来自postmeta 表并将其存储在数组中。

我一点也不了解mySQL.

非常感谢您的帮助。

1 个回复
SO网友:Ronnieinspain

在推荐了@toscho之后,我查看了get\\u结果,并对函数进行了以下编辑,最终达到了目的。

if ( ! function_exists( \'get_meta_values\' ) ) {
function get_meta_values( $key = \'\', $type = \'post\', $status = \'publish\' ) {
    global $wpdb;
    if( empty( $key ) )
        return;
    $r = $wpdb->get_results($wpdb->prepare( "
        SELECT      pm.meta_value, pm.post_id FROM {$wpdb->postmeta} pm
        LEFT JOIN   {$wpdb->posts} p ON p.ID = pm.post_id
        WHERE       pm.meta_key = \'%s\' 
        AND         p.post_status = \'%s\' 
        AND         p.post_type = \'%s\'
    ", $key, $status, $type ), ARRAY_A );
    return $r;
}
}
只有当我添加第二个参数ARRAY\\u A(ARRAY\\u N或OBJECT(默认值)也可以)以按照http://codex.wordpress.org/Class_Reference/wpdb

感谢大家的帮助。

结束

相关推荐

通过MySQL替换链接URL结束字符串

我们即将购买一个使用亚马逊附属链接的网站。当然,他们有自己的联盟ID,亚马逊联盟链接如下:http://www.amazon.com/gp/product/productcode/?tag=affiliateID-20 在Wordpress博客中更改这些链接URL的结尾字符串的最佳方法是什么?