Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.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_num_rows()不适用于SUM()?_Php_Mysql - Fatal编程技术网

Php mysql_num_rows()不适用于SUM()?

Php mysql_num_rows()不适用于SUM()?,php,mysql,Php,Mysql,当在下表上运行查询时,如果不存在匹配的行,则使用PHP mysql_num_rows()返回“1” 经过测试,我发现在查询中使用SUM()函数时会出现问题。如果我从查询中取出SUM(),mysql\u num\u rows()会像它应该的那样返回“0” 我是否应该使用其他东西代替mysql_num_rows()来确定表中是否有匹配的行 表: name | students_money | grade George | 5 | A Bill | 10 | A Dan | 7 | A 代码: $s

当在下表上运行查询时,如果不存在匹配的行,则使用PHP mysql_num_rows()返回“1”

经过测试,我发现在查询中使用SUM()函数时会出现问题。如果我从查询中取出SUM(),mysql\u num\u rows()会像它应该的那样返回“0”

我是否应该使用其他东西代替mysql_num_rows()来确定表中是否有匹配的行

表:

name | students_money | grade
George | 5 | A
Bill | 10 | A
Dan | 7 | A
代码:

$sql=“选择SUM(students\u money)作为学生表中的SUM\u money,其中name='Tom'和name='Jack';
$result=@mysql\u query($sql,$con)或die(mysql\u error());
$num\u rows=mysql\u num\u rows($result);
如果($num_行<1){
echo“不是每个人都付钱”;
出口
}
while($row=mysql\u fetch\u数组($result)){
$sum_money=$row[sum_money];
$total=$total+$sum\U MONY;
}
SUM()
是一个聚合函数。它获取为组返回的所有行并将它们相加

由于没有
GROUPBY
子句,因此它将所有行的值相加,即使没有。然后它将总计作为一行返回,因此应该只有一行

如果您明确希望返回什么,我可以尝试帮助您编写一条语句来返回它。

mysql\u num\u rows()告诉您数据库查询返回的行数。在您的案例中,总是有一行返回,因为总和中总是有一行返回。总数当然可以是0

在mysql查询浏览器中测试查询可能是个好主意。也许你在找这样的东西

SELECT name, SUM(students_money) AS sum_money 
FROM students_table
GROUP BY name;
这将按姓名对金额进行分组。要跳过0和,可以添加以下内容:

HAVING sum_money > 0;

在使用SUM()函数时,我希望能够检查Tom和Jack是否不在表中。这是可能的吗?如果要返回这两个参数的总和,则不能在单个查询中执行此操作。如果您想知道每个名字的总数,可以使用@nhnb查询。然后可以在PHP中执行求和。否则,您将需要执行一个查询以查看他们是否都已付款,然后执行第二个查询以获取总额。
HAVING sum_money > 0;