将 SUM(tbl_column) 与 $print 一起使用时未定义的常量

我正在使用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

我想要实现的是:

  1. 消除表中的重复用户。

  2. 对点列进行计数,并改为向用户显示组合点。

例子

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 语句更改为 use 时SUM,它会生成一个


警告:在第 27 行使用未定义的常量点 - 假定为“点”(这将在未来版本的 PHP 中引发错误)


此查询示例还将 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 行有关,该行将是点的回波。


饮歌长啸
浏览 165回答 3
3回答

牧羊人nacy

您可以使用此查询SELECT `UserID`, `Name`, `Email`,SUM(`points`) As total&nbsp;FROM `data` GROUP BY `UserID` ORDER BY SUM(`points`) DESC
打开App,查看更多内容
随时随地看视频慕课网APP