这里非常简单的脚本主要是工作。它成功地回应了整个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回声?我是否需要针对总数进行另一次查询(我真的不想做的事情)?
提前致谢。
答案 0 :(得分:1)
在您的查询中为此列提供一些名称
SUM(donations.amount) as sum_amount
然后使用echo $row->sum_amount
答案 1 :(得分:0)
PHP echo或SQL确实没有问题。看来你正在告诉PHP调用$ rows“sum”方法,这种方法不存在。
答案 2 :(得分:0)
现在我更了解你想要的输出了:
从SQL中删除SUM(donations.amount)将为您提供多行(每次捐赠一行),而不是每个用户查询一行
最佳解决方案可能是使用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;
?>