我正在处理一个wpdb查询,它只是没有运行。由于某些原因,wpdb的错误报告没有给我任何错误。
那么,有人能在这个查询中发现一个明显的错误吗?
我试图在meta_value表中获取所有_sell_media_attached_file键的post_meta。
我首先运行一个wp_query,获取post ID,然后通过wpdb查询运行每个post 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();,则不会出现错误。
发布于 2013-09-03 13:19:03
在您的代码中,我没有看到wpdb类的初始化来访问wordpress中的wpdb类,您必须将它定义为访问类的函数的global,如果$post_ids包含多个以逗号分隔的if,则必须使用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-03 13:18:10
为什么不试试这样的方法呢?
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
}希望能帮上忙!
https://stackoverflow.com/questions/18592758
复制相似问题