0

我正在处理 wpdb 查询,但它没有运行。由于某种原因,wpdb 的错误报告没有给我任何错误。

那么,任何人都可以在这个查询中发现一个明显的错误吗?

我正在尝试获取表meta_value中所有_sell_media_attached_file键的post_meta

我首先运行一个wp_query,获取帖子 ID,然后通过 wpdb 查询运行每个帖子 ID。

这是我正在使用的:

        // run the loop 
        $loop = new WP_Query( array( 
            'post_type' => 'sell_media_item',
            'collection' => $club,
            'include_children' => false,
            'year' => $year,
            'monthnum' => $month,
            'day' => $day,
            'fields' => 'ids',
        ) );


        if ( $post_ids = $loop->get_posts() ) {

            $post_ids = implode( ',', $post_ids );

            //breaks here
            $atts_ids = $wpdb->get_col( "SELECT meta_value FROM $wpdb->postmeta WHERE post_id = $post_ids AND meta_key = '_sell_media_attached_file' " );
            echo('<b>query:</b> <pre>'); var_dump($atts_ids);

但正如我所说,没有任何输出,var_dump如果我添加,$wpdb->print_error();我不会收到任何错误。

4

2 回答 2

2

在您的一段代码中,我没有看到wpdb类的初始化以访问wpdb您的 wordpress 中的类,您必须将其定义为global访问类的功能,并且如果$post_ids包含用逗号分隔的多个 id,您必须使用IN()子句代替=运算符

global $wpdb;

        // run the loop 
        $loop = new WP_Query( array( 
            'post_type' => 'sell_media_item',
            'collection' => $club,
            'include_children' => false,
            'year' => $year,
            'monthnum' => $month,
            'day' => $day,
            'fields' => 'ids',
            'nopaging'=>true
        ) );


        if ( $post_ids = $loop->get_posts() ) {

            $post_ids = implode( ',', $post_ids );

            //breaks here
            $atts_ids = $wpdb->get_col( "SELECT meta_value FROM $wpdb->postmeta WHERE post_id IN($post_ids) AND meta_key = '_sell_media_attached_file' " );
            echo('<b>query:</b> <pre>'); var_dump($atts_ids);
于 2013-09-03T13:19:03.633 回答
0

为什么不尝试这样的事情呢?

if( $loop->have_posts() ){
  $ids = $loop->get_posts();
  foreach( $ids as $id ){
    $atts_ids[] = get_post_meta($id, '_sell_media_attached_file', true|false ); //true if single value false if multiple values return as array
  }
}else{
  //Do something else
}

希望能帮助到你!

于 2013-09-03T13:18:10.877 回答