【问题标题】:SQL - PHP foreach variable ID outside loopSQL - 循环外的 PHP foreach 变量 ID
【发布时间】: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-&gt;user_id 无法识别,但我需要团队的特定 ID 来更新它。

谢谢大家。

【问题讨论】:

  • 将其存储在循环前声明的临时变量中?
  • 对于未来的代码:您不需要引用/反引号您的列和表名。它们只会增加视觉上的混乱,并且只是您犯语法错误的另一种方式。您需要它们的唯一原因是如果您有一个保留字的列名,并且使用保留字的列名是一个糟糕的主意,因此您可以同时避免这两个坏习惯。
  • @AndyLester: 对于包含 ASCII 字符而非基本拉丁字母、数字 0-9、美元、下划线的标识符也需要引号;或仅由数字组成。
  • 我会将这些添加到我要避免的不良做法列表中,从而强化引用列名和表名是不好的想法。

标签: php mysql sql wordpress foreach


【解决方案1】:

我认为你需要声明:

global $post;

在 foreach 循环之外。

【讨论】:

  • 谢谢我解决了!我在循环之前声明了它但没有工作,所以我在之后重新声明并工作了!谢谢
猜你喜欢
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
  • 2014-05-27
  • 2014-03-15
  • 2012-12-20
  • 1970-01-01
  • 2019-10-14
相关资源
最近更新 更多