我正在使用PHP制作个人理财计划,而且我已经陷入了应该轻松完成的任务 - 平衡帐户。
事务存储在MySQL中,每个事务都有一个类型 - 1表示撤销,2表示存款。下面是我的PHP用于平衡帐户,而不是接近正确数量。
//Get the starting balance
$getStartingBalance = $db->query("SELECT amount FROM startingBalance WHERE id = 1");
$startingBalance = $getStartingBalance->fetch();
$startingBalance = $startingBalance['amount'];
//Balance transactions
$getAllTransactions = $db->query("SELECT * FROM transactions ORDER BY date");
while ($balanceEntry = $getAllTransactions->fetch()) {
$balanceEntryType = $balanceEntry['type'];
$balanceEntryAmount = $balanceEntry['amount'];
if ($balanceEntryType == "1") {
$accountBalance = $startingBalance - $balanceEntryAmount;
} else if ($balanceEntryType == "2") {
$accountBalance = $startingBalance + $balanceEntryAmount;
}
}
有什么想法吗?感谢
答案 0 :(得分:2)
$accountBalance = $startingBalance - $balanceEntryAmount;
这意味着每当您点击此行时,您将当前余额设置为原始余额减去条目金额。你可能想在while循环之前分配:
# or just rename $startingBalance to $accountBalance
$accountBalance = $startingBalance;
然后在你的while循环中
$accountBalance = $accountBalance - $balanceEntryAmount;
当然,你也必须修改条件的另一个分支。
下次出现类似错误时,请尝试在日志文件中输出每个计算的当前值 - 您可以非常快速地计算出来。
答案 1 :(得分:2)
为什么不存储已签名的交易值,而不是存储“交易类型”列?
这样,您可以通过简单的SQL查询获得帐户余额。
SELECT SUM(amount) FROM transactions;