回显MYSQL列的总和

时间:2014-03-24 16:32:42

标签: php mysql

这里非常简单的脚本主要是工作。它成功地回应了整个MySQL查询,除了捐款的总和。我想要它做的是回应一个用户的捐赠,而不是所有的捐赠。

这是脚本。

<?php
require_once("models/config.php");


 $id=$_SERVER['QUERY_STRING'];

$sql = "SELECT persons.personid, persons.firstname, persons.surname, donations.amount,     SUM(donations.amount), donations.donation_type, donations.donation_date, donations.event
FROM persons, donations
WHERE persons.personid = donations.personid = '$id'
ORDER BY personid";

$results = $mysqli->query($sql);

 echo "<table border='1' cellpadding='10'>";
    echo "<tr> <th>First Name</th> <th>Surname</th> <th>Donation Type</th> <th>Donation     Amount</th> <th>Donation Event</th> <th>Donation Date</th></tr>";
if($results->num_rows) {
while($row = $results->fetch_object()) {
echo "<tr>";
            echo '<td>' . $row->firstname . '</td>';
            echo '<td>' . $row->surname . '</td>';
           echo '<td>' . $row->donation_type . '</td>';
           echo '<td>' . $row->event . '</td>';
           echo '<td>  $'.$row->amount. '</td>';
           echo '<td>' . $row->donation_date . '</td>';
  echo "</tr>";
  echo "</table>"; 

  echo $row->sum(amount);
}
} else {
echo "</table>";
  echo 'No results';
}

?>

我收到此错误代码:&#34;致命错误:在...&#34;中调用未定义的方法stdClass :: sum()可能有什么问题 - MYSQL查询,PHP回声?我是否需要针对总数进行另一次查询(我真的不想做的事情)?

提前致谢。

4 个答案:

答案 0 :(得分:1)

在您的查询中为此列提供一些名称

SUM(donations.amount) as sum_amount

然后使用echo $row->sum_amount

打印

答案 1 :(得分:0)

PHP echo或SQL确实没有问题。看来你正在告诉PHP调用$ rows“sum”方法,这种方法不存在。

答案 2 :(得分:0)

现在我更了解你想要的输出了:

  1. 从SQL中删除SUM(donations.amount)将为您提供多行(每次捐赠一行),而不是每个用户查询一行

  2. 最佳解决方案可能是使用PHP变量(初始化为0),每次代码通过while循环体时都会添加$ row-&gt;金额。循环完成后,回显此变量,这是所有用户捐赠的总和。

答案 3 :(得分:0)

好的,所以我弄清楚了。对于那些想要学习的人来说,这就是你得到它的方式。

必须将SQL查询修改为:

 SELECT persons.personid, persons.firstname, persons.surname, donations.amount,        donations.donation_type, donations.donation_date, donations.event
 FROM persons
 INNER JOIN donations ON persons.personid = donations.personid
 AND donations.personid =  '$id'";

然后表输出错误。我过早地放置了端表标签并且切断了所有输出。然后,需要创建一个变量来完成所有捐赠的总和。它看起来像这样:

$results = $mysqli->query($sql);

echo "<table border='1' cellpadding='10'>";
echo "<tr> <th>First Name</th> <th>Surname</th> <th>Donation Type</th> <th>Donation     Event</th> <th>Donation Amount</th> <th>Donation Date</th></tr>";
$totaldonations = 0;
if($results->num_rows) {

while($row = $results->fetch_object()) {
echo "<tr>";
echo '<td>' . $row->firstname . '</td>';
echo '<td>' . $row->surname . '</td>';
echo '<td>' . $row->donation_type . '</td>';
echo '<td>' . $row->event . '</td>';
echo '<td> $'.$row->amount. '</td>';
echo '<td>' . $row->donation_date . '</td>';
echo "</tr>";

$totaldonations = $totaldonations + $row->amount;

}
}
 else {
echo 'No results';
}
echo "</table>";
echo "Total of Donations:  $".$totaldonations;
?>