2017-05-05 33 views
0

我有一个WordPress数据库。在postmeta表格中,我们为每个帖子设置了3个不同的值。我们更新我们的主题3次,并在每次帖子数量彼此不同。我想做这个;有在不同的行中一个表值:SQL收集来自不同行的值并更新新行

交ID 10值1:更好的视图计数3455
交ID 10值2:post_stats 522
交ID 10值3:post_views_count 52

我想总结三个并更新结果post_views_count。

我该怎么做,我应该用什么sql?

我认为没有选择使用SQL fol 1000发布它应该是一个php代码。但我无法想象我应该使用它的sql。

EDITED


后,我做出一些改变和研究,我发现了一个解决方案:

<?php $my_meta = bf_get_post_meta('better-views-count');?> 
<BR> 
<?php $my_meta2 = bf_get_post_meta('post_stats');?> 
<BR> 
<?php $my_meta3 = bf_get_post_meta('post_views_count');?> 


BETTER: 
<?php echo $my_meta ?> 
<BR> 
POST STATS:<?php echo $my_meta2 ?><BR> 
POST VIEW COUNT:<?php echo $my_meta3 ?> 
<BR> 
TOTAL: 
<?php 
$a=array("a"=>$my_meta,"b"=>$my_meta2,"c"=>$my_meta3); 
$total_sum = array_sum($a); 

echo $total_sum; 
?> 


<?php 



$row = $wpdb->get_row($wpdb->prepare("SELECT * FROM wp_postmeta WHERE post_id = $post->ID;")); 

if ($row) { 
    $qry_result = $wpdb->update( 
     wp_postmeta, 
     array( 
      'id' => $row->id, 
        'post_id' => $post->ID , 
        'meta_key' => "better-views-count", 
        'meta_value' => $total_sum 
         ), 
       array(
        '%s', 
        '%s', 
        '%s' 
        ) 
    ); 
} else { 
    $qry_result = $wpdb->insert( 
     wp_postmeta, 
     array( 
        'post_id' => $post->ID, 
        'meta_key' => "better-views-count", 
        'meta_value' => $total_sum 
     ), 
     array( 
        '%s', 
        '%s', 
        '%s' 
        ) 
    ); 
} 

if(false !== $qry_result) { 
$qry_result = true; 
} 

$response = array('success' => $qry_result, 'data' => 'hello'); //if $data is set 
echo $qry_result; 

?> 

结果:

更好:
POST STATS:37
POST VIEW COUNT:909
TOTAL:946

,它应该更新,并应


更好:946
POST STATS:37
POST浏览次数:909
总计:1892年

回答

0

使用$wpdb来计算总计每篇文章。

global $wpdb; 

$results = $wpdb->query("SELECT meta_value FROM wp_postmeta WHERE post_id IN ('".$post_id."') AND meta_key IN ('better-views-count','post_stats','post_views_count') "); 

print_r($results); 

只需将您的$post_id就位。

+0

我做了一个更新,我可以计算它们,但我无法更新。我做了一个显示给我的500页的帖子,并把它放在标题的循环中。并在此页面显示结果不会改变 –