Php mysql_num_rows()不适用于SUM()?
当在下表上运行查询时,如果不存在匹配的行,则使用PHP mysql_num_rows()返回“1” 经过测试,我发现在查询中使用SUM()函数时会出现问题。如果我从查询中取出SUM(),mysql\u num\u rows()会像它应该的那样返回“0” 我是否应该使用其他东西代替mysql_num_rows()来确定表中是否有匹配的行 表: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
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;