2013-09-21 195 views
0

我將更新從foreach循環生成的特定標識的值字段。SQL - PHP foreach循環外的變量ID

$sql = "SELECT `user_id`, 
    max(case when `meta_key` = 'link' then `meta_value` end) as link , 
    max(case when `meta_key` = 'team' then `meta_value` end) as team , 
    max(case when `meta_key` = 'points' then `meta_value` end) as points 
    FROM wp_usermeta GROUP BY `user_id` ORDER BY points DESC"; 

global $wpdb; 
$usermeta = $wpdb->get_results($sql) or die(mysql_error()); 


foreach ($usermeta as $post) 
    echo "<li> name: ". $post->team ."<br/> link: ". $post->link . "<br/> obtain: " .$post->points. " points </li>" ; 

頁面上的輸出是一樣的東西:

球隊:曼聯鏈接:manunited.co.uk點:8

用戶可以投票隊和國家隊賺取8點,所以我需要更新像這樣。

update_usermeta($post->user_id , 'points', $_POST['points']); 

的問題是,在foreach以外的變量$post->user_id沒有確認,但我需要團隊的特定ID進行更新。

謝謝大家。

+0

將它存儲在循環之前聲明的臨時變量中? – Akash

+1

對於未來的代碼:您不需要引用/反引用您的專欄和表名稱。它們只會增加視覺混亂,並且只是讓語法錯誤發生的另一種方式。你需要它們的唯一原因是如果你有一個列名是保留字,並且使用列名是保留字是一個可怕的想法,所以這是你可以一次避免的兩個壞習慣。 –

+0

@AndyLester:包含除基本拉丁字母,數字0-9,美元,下劃線以外的ASCII字符的標識符也需要引號。或者僅由數字組成。 eggyal

回答

0

我相信你需要聲明:

global $post; 

foreach循環之外。

+1

謝謝我解決了!我在循環之前宣佈它,但沒有工作,所以我重新宣佈它並工作!謝謝 – nikz