Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在mysql中添加变量_Php_Mysql_Sql - Fatal编程技术网

Php 在mysql中添加变量

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())

我拥有一个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 />";
}
$\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),我认为这是非常有效的。再次感谢。有没有办法按最高金额(级别)订购?