【问题标题】:Select SUM() as a variable in a for Loop在 for 循环中选择 SUM() 作为变量
【发布时间】:2013-02-05 18:41:12
【问题描述】:

我正在尝试从数据库生成 XML,并且需要根据列的平均值收集特定数量的数据。对于$numItems 变量,这可以从 5 到 30 个查询不等。

我需要执行一个 for 循环并在 SUM($variable) 中分配列名,但我没有得到任何数据(但也没有错误)。

这是我的代码:

for ($t = 1; $t <= $numItems; $t++){

$query = mysql_fetch_assoc(mysql_query("SELECT SUM(column'".$t."') AS value_sum FROM scoring WHERE ID='" . $userID . "' AND name ='" . $name . "'")); 

$q = $query['value_sum'] / $totalUsers;

echo "<output".$t.">" . $q . "</output".$t.">\n";

}

问题是为我从中获取数据的列分配SUM(column1) 变量名称,当我单独编写查询时它可以工作,但是在语句中分配变量会导致问题。哪位大神可以指点一下吗?

提前致谢。

【问题讨论】:

  • 在这种情况下,回显该 SQL 并尝试直接在 MySQL 终端上执行它。我敢肯定,您很快就会有一个想法。

标签: php mysql variables for-loop sum


【解决方案1】:

您的查询中可能有额外的单引号。我认为应该是:

"SELECT SUM(column".$t.")..."

您还应该考虑进行单选。在 for 循环中执行多个数据库调用将是一个巨大的性能问题。你可以这样写一个选择:

"SELECT SUM(column1), SUM(column2), SUM(column3),..."

【讨论】:

  • GROUP BY。突出评论,SQL 调用越少越好。
【解决方案2】:

在列名周围似乎有错误的转义/串联...

"SELECT SUM(column{$t}) AS value_sum FROM scoring WHERE ID='{$userID}' AND name ='{$name}'"

这就是你想要的吗?

也可以使用PDO!

【讨论】:

  • 感谢 Ficuscr,完美运行。我会阅读 PDO,感谢您的反馈。
猜你喜欢
  • 2019-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多