2014-03-24 46 views
-1

很简单的脚本在这里大多数工作。它成功地回应了整个MySQL查询,除了捐款的总和。我想要它做的是回报一个用户的全部捐款,而不是所有捐款。Echo出了一个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'; 
} 

?> 

我得到这个错误代码:“致命错误:调用未定义的方法stdClass的::在...总和()”可能的麻烦是什么 - MySQL查询,PHP的回声?我是否需要为总数做另一个查询(我真的不想这么做)?

在此先感谢。

+0

呃,GROUP BY ?? – Strawberry

回答

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; 
?> 
1

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

SUM(donations.amount) as sum_amount 

然后用echo $row->sum_amount

+0

这只适用于如果你想获得在WHERE条款 – svvac

+0

中指定给定用户的总金额,他说一个用户的总捐款。 –

+0

正确。但他编写了一张表格显示每个用户的总数,所以我澄清了答案;-) – svvac

0

没有什么是错PHP的回声或您的SQL真的打印。看来你告诉PHP调用$ row的“sum”方法,这个方法不存在。

0

现在我明白你想要更好的输出:

  1. 从SQL删除SUM(donations.amount)会给你多行(每捐赠一个),而不是每个用户的单行查询

  2. 最好的解决方案可能是使用PHP变量(初始化为0),每次代码通过while循环的主体时添加$ row-> amount。一旦循环完成,请回显这个变量,这是所有用户捐款的总和。

+0

它不会以您的建议查询返回任何结果。 – JLA

+0

嗨,是的,使用该变量设置为0是需要的。但是我的查询被搞砸了。 – JLA