首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >$wpdb查询不运行

$wpdb查询不运行
EN

Stack Overflow用户
提问于 2013-09-03 12:49:19
回答 2查看 480关注 0票数 1

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

那么,有人能在这个查询中发现一个明显的错误吗?

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

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

下面是我的工作:

代码语言:javascript
复制
        // 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();,则不会出现错误。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-03 13:19:03

在您的代码中,我没有看到wpdb类的初始化来访问wordpress中的wpdb类,您必须将它定义为访问类的函数的global,如果$post_ids包含多个以逗号分隔的if,则必须使用IN()子句而不是=操作符。

代码语言:javascript
复制
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);
票数 3
EN

Stack Overflow用户

发布于 2013-09-03 13:18:10

为什么不试试这样的方法呢?

代码语言:javascript
复制
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
}

希望能帮上忙!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18592758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档