mysql SUM()和php表中的动态行,供特定用户无法使用

时间:2018-06-07 19:03:05

标签: php html mysql function

我在使用mysql数据库创建动态表时遇到困难...我的数据库有这个;

userid | product | amount
2 | cat | 5
2 | dog | 3
2 | cat | 5
3 | cat | 1
3 | dog | 2

我希望得到一个表格,该表格总结每个用户的每个产品的数量,以便当用户访问特定页面时,他们可以看到每个产品的总数(例如用户2);

Product | Amount
cat | 10
dog | 3

这是我放在一起的PHP代码,但似乎我的sum函数不起作用,我无法弄明白...提前谢谢!

$userid = get_user_id()
$amountperproduct = mysqli_query($con,"SELECT $userid SUM(amount) FROM wp_payout_history GROUP BY product");

echo "<table border='1'>
<tr>
<th>product</th>
<th>grand sum</th>
</tr>";
if (mysqli_num_rows($amountperproduct)>0){
while($row2 = mysqli_fetch_array($amountperproduct))
{
echo "<tr>";
echo "<td>" . $row2['product'] . "</td>";
echo "<td>" . $row2['amount'] . "</td>";
echo "</tr>";
}
}
echo "</table>";

1 个答案:

答案 0 :(得分:1)

使用聚合函数时,您必须GROUP BY SELECT部分中显示的每个其他列(在您的情况下:userid)。

现在似乎有很多拼写错误,例如SELECT中的$符号,缺少逗号等。

您可能需要这样的查询:

SELECT userid, product, SUM(amount) AS total FROM wp_payout_history GROUP BY userid, product

这将创建一个大表,其中包含您要查找的所有信息。如果您只想要一个用户使用这样的表,请使用WHERE部分,例如:

SELECT product, SUM(amount) AS total FROM wp_payout_history WHERE userid = '$userid' GROUP BY product