在mysql中添加变量

时间:2012-09-13 12:38:01

标签: php mysql sql

我拥有一个RPG并希望将所有级别的用户怪物加起来并得到一个结束号码。

因此,我将其缩小为一个用户并且效果很好。

$_SESSION['username'] = "smbisme";


$query = "SELECT belongsto, SUM(level) FROM user_pokemon WHERE `belongsto` = '".$_SESSION['username']."' "; 

$result = mysql_query($query) or die(mysql_error());

// Print out result
while($row = mysql_fetch_array($result)){
    echo $row['belongsto'];
    echo "". $row['SUM(level)'];
    echo "<br />";
}

现在,它显示并适用于用户'smbisme',但现在我想为所有用户执行此操作。

所以我试着把它拿出去。

$query = "SELECT belongsto, SUM(level) FROM user_pokemon  "; 

$result = mysql_query($query) or die(mysql_error());

// Print out result
while($row = mysql_fetch_array($result)){
    echo $row['belongsto'];
    echo "". $row['SUM(level)'];
    echo "<br />";
}

但是由于某些原因我只获得了最高的结果(1个结果)我想做我为1个用户做的事情,但是抓住所有结果而不仅仅是一个用户。

2 个答案:

答案 0 :(得分:1)

您需要对多行聚合使用group by语句:

SELECT 
    belongsto, 
    SUM(level) 
FROM 
    user_pokemon 
group by 
    belongsto

就此而言,正如PLB在评论中指出的那样,这段代码对于代码注入来说是相当可靠的。您应该考虑使用预准备语句来获得此结果。没有注射,这是一件好事。

按列或汇总排序:

SELECT 
    belongsto, 
    SUM(level) as sumLevel 
FROM 
    user_pokemon 
group by 
    belongsto 
order by 
    sumLevel desc

答案 1 :(得分:1)

SUM是一个聚合函数,因此您需要group by

SELECT belongsto, SUM(level) as sumlevel FROM user_pokemon group by belongsto order by sumlevel DESC