Php 在mysql中添加变量
我拥有一个rpg,我想把怪物的所有等级加起来,得到一个最终的数字 所以我缩小了一个用户的范围,效果很好Php 在mysql中添加变量,php,mysql,sql,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())
$_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 />";
}
$\u会话['username']=“smbisme”;
$query=“从用户_pokemon中选择belongsto,SUM(level),其中`belongsto`='”$\u会话['username']。”;
$result=mysql\u query($query)或die(mysql\u error());
//打印结果
while($row=mysql\u fetch\u数组($result)){
echo$row['belongsto'];
回显“.”行[“总和(级别)”;
回声“
”;
}
现在,这显示了用户“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 />";
}
$query=“从用户_pokemon中选择belongsto,SUM(level)”;
$result=mysql\u query($query)或die(mysql\u error());
//打印结果
while($row=mysql\u fetch\u数组($result)){
echo$row['belongsto'];
回显“.”行[“总和(级别)”;
回声“
”;
}
但是由于某些原因,我只得到了最高的结果(1个结果),我想像我为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
SUM
是一个聚合函数,因此您需要一个groupby
SELECT belongsto, SUM(level) as sumlevel FROM user_pokemon group by belongsto order by sumlevel DESC
我会选择用户名:';drop table user_pokemon;--。换句话说,使用事先准备好的声明,否则会有安全漏洞。@TarikFilipovic欢迎,所以,您应该接受这个问题作为解决方案,以便其他人稍后可以看到它。你可以在15分钟内完成。有没有办法按最高的金额(级别)订购?现在它没有回音了。。。。在while…@TarikFilipovic是的,列名改为/aggregate上的别名。耶,我注意到我只是呼出了sumLevel,而不是SUM(level),我认为这是非常有效的。再次感谢。有没有办法按最高金额(级别)订购?