我正在处理一个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();
,我没有错误。
答案 0 :(得分:2)
在你的代码中,我没有看到wpdb
类的初始化来访问wordpress中的wpdb
类,你必须将其定义为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);
答案 1 :(得分: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
}
希望它有所帮助!