我正在使用 SUM 参数查询数据库以计算数据库表中的一列。因此,例如,在不使用 SUM 参数的情况下,我得到以下结果:
UserID | Name | Email | points
-------+--------+------------------+-------
1 | name 1 | email1@email.com | 5
1 | name 1 | email1@email.com | 8
1 | name 1 | email1@email.com | 2
2 | name 2 | email2@email.com | 8
2 | name 2 | email2@email.com | 8
3 | name 3 | email3@email.com | 3
4 | name 4 | email4@email.com | 9
上面代码中使用的SQL语句:
SELECT *
FROM db_tbl
ORDER BY points DESC
我想要实现的是:
- 消除表中的重复用户。
- 统计分数列并向用户显示组合分数。
例子
UserID | Name | Email | points
-------+--------+------------------+-------
1 | name 1 | email1@email.com | 15
2 | name 2 | email2@email.com | 16
3 | name 3 | email3@email.com | 3
4 | name 4 | email4@email.com | 9
正在测试的SQL语句:
SELECT user_id, name, email, SUM(points)
FROM db_tbl
ORDER BY points DESC
我遇到的问题是,当我将 SQL 语句更改为使用 SUM
时,它会生成一个
Warning: Use of undefined constant points - assumed 'points' (this will throw an error in a future version of PHP) on line 27
此查询示例还将 points int 替换为单词 points。
我还在学习PHP,下面贴出了完整的代码供引用。
function ctlTopUsers() {
global $wpdb;
$result = $wpdb->get_results ( "SELECT user_id, name, email, SUM(points) FROM db_tbl order by points DESC" );
foreach ( $result as $print ) {
echo '<table border="1">';
echo '<tr>';
echo '<th>Name</th>';
echo '<th>Email</th>';
echo '<th>Points</th>';
echo '</tr>';
echo '<tr>';
echo '<td>' . $print->name.'</td>';
echo '<td>' . $print->email.'</td>';
echo '<td>' . $print->points.'</td>';
echo '</tr>';
echo '</table>';
}
}
错误与第 27 行有关,这将是点的回显。
提前致谢!
最佳答案
您需要为 SUM 列添加一个别名,以使用名称 points
...
$result = $wpdb->get_results ( "SELECT user_id, name, email, SUM(points) as points FROM db_tbl order by points DESC" );
您可能会发现名称类似于 SUM(points)
,但添加别名会更容易。
关于php - 将 SUM(tbl_column) 与 $print 一起使用时未定义常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56010719/