2016-04-14 124 views
0

我需要更新自定義字段,我用wordpress做了一個查詢並返回一行,該行似乎是一個對象,我無法從中提取帖子ID。在WP中獲取帖子ID查詢

$wpdb->query('SELECT * FROM wp_posts WHERE post_title = "' . $result['name'] . '" AND 
post_status = "publish"'); 
if ($wpdb->num_rows) { 
    update_field('field_570e529aa4a41', $result['runs'], $post_id); 
    update_field('field_570e52a7a4a42', $result['wins'], $post_id); 
    //echo '<pre>'; 
    //print_r($wpdb); 
    //echo '</pre>'; echo 'This Horse is already in the database so we 
    //just updated its statistics'; 
} else { 

} 
+1

'$ wpdb'返回什麼?你可以請'print_r'結果? – Milap

回答

2

問題是您正在執行與$wpdb->query查詢,但沒有使用它的返回對象。

SOL 1:

使用$wpdb->get_results()與第二個參數是返回記錄集類型ARRAY_A

$SQL = "your query here"; 
$result = $wpdb->get_results($SQL, ARRAY_A); 

$post_id = $result['ID']; // with single record set. 

或多個記錄使用foreach循環。

foreach($result as $val) { 

$post_id = $val['ID']; 
echo $post_id.'<br>'; 
} 

SOL 2與您的代碼:

$rows = $wpdb->query('SELECT * FROM wp_posts WHERE post_title LIKE "' . $result['name'] . '" AND post_status = "publish"'); 
     if ($rows) { 
      foreach ($rows as $key => $rc) { 
       update_field('field_570e529aa4a41', $result['runs'], $rc->ID); 
       update_field('field_570e52a7a4a42', $result['wins'], $rc->ID); 
      } 
     } 
1
$fivesdrafts = $wpdb->get_results('SELECT * FROM wp_posts WHERE post_title = "' . $result['name'] . '" AND post_status = "publish"' 
); 

foreach ($fivesdrafts as $fivesdraft) 
{ 
    echo $fivesdraft->ID; 
} 
2

你是不是查詢一個結果,一個列表,而不是,所以你應該通過它的循環,像這樣:

$results = $wpdb->get_results('SELECT * FROM wp_posts WHERE post_title = "' . $result['name'] . '" AND post_status = "publish"'); 
    if ($results) { 
     foreach($results as $key => $row) { 
     update_field('field_570e529aa4a41', $result['runs'], $row->ID); 
     update_field('field_570e52a7a4a42', $result['wins'], $row->ID); 
     } 
    } 
+0

就是這樣!我需要查看並研究$ key = $ row,因爲這是什麼解決了問題!謝謝。 –