2013-09-21 156 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