【发布时间】:2013-09-26 12:37:44
【问题描述】:
我会更新从 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 来更新它。
谢谢大家。
【问题讨论】:
-
将其存储在循环前声明的临时变量中?
-
对于未来的代码:您不需要引用/反引号您的列和表名。它们只会增加视觉上的混乱,并且只是您犯语法错误的另一种方式。您需要它们的唯一原因是如果您有一个保留字的列名,并且使用保留字的列名是一个糟糕的主意,因此您可以同时避免这两个坏习惯。
-
@AndyLester:
对于包含 ASCII 字符而非基本拉丁字母、数字 0-9、美元、下划线的标识符也需要引号;或仅由数字组成。 -
我会将这些添加到我要避免的不良做法列表中,从而强化引用列名和表名是不好的想法。
标签: php mysql sql wordpress foreach