我可以知道如何在当前的sql代码上实现SUM amount
吗?
我试过谷歌,但它似乎没有我想要的答案。其中大部分都是MySQL格式,与使用PDO库的当前代码完全不同。
我的代码:
try {
$start_date = "3/1/2014";
$end_date = "4/1/2014";
$start = DateTime::createFromFormat('d/m/Y', $start_date);
$end = DateTime::createFromFormat('d/m/Y', $end_date);
$query = $db->prepare("SELECT * FROM log WHERE DATE(log_datetime) >= :start AND DATE(log_datetime) < :end + INTERVAL 1 DAY");
$success = $query->execute(array(':start'=>$start->format('Y-m-d'), ':end'=>$end->format('Y-m-d')));
}
$rows = $query->fetchAll(PDO::FETCH_OBJ);
//result
foreach ($rows as $row) {
$log_id = $row->log_id;
$dob = $row->dob;
$log_datetime = $row->log_datetime;
$log_count = $row->log_count;
$amount = $row->amount;
echo '<tr>';
echo '<td>' . htmlspecialchars($log_id) . '</td>';
echo '<td>' . htmlspecialchars($dob) . '</td>';
echo '<td>' . htmlspecialchars($log_datetime) . '</td>';
echo '<td>' . htmlspecialchars($log_count) . '</td>';
echo '<td>' . htmlspecialchars($amount) . '</td>';
echo '</tr>';
}
sqlfiddle:http://sqlfiddle.com/#!2/6fa8f/5
我想sum 'log_count'
并返回用户输入日期和sum amount
的访问人数,并返回该特定日期的收入值。
我如何在PHP PDO中执行此操作?
非常感谢任何帮助!
答案 0 :(得分:2)
UPDATE:您可以在迭代结果集时计算总和。像这样的东西
echo '<table><tbody>';
$log_count_total = 0;
$amount_total = 0;
foreach ($rows as $row) {
$log_count_total += $row->log_count;
$amount_total += $row->amount;
echo '<tr>';
echo '<td>' . $row->log_id . '</td>';
echo '<td>' . $row->dob . '</td>';
echo '<td>' . $row->log_datetime . '</td>';
echo '<td>' . $row->log_count . '</td>';
echo '<td>' . $row->amount . '</td>';
echo '</tr>';
}
echo '<tr>';
echo '<td></td><td></td><td></td>';
echo '<td><strong>' . $log_count_total . '</strong></td>';
echo '<td><strong>' . $amount_total . '</strong></td>';
echo '</tr>';
echo '</tbody></table>';
输出:
4 1956-05-15 2014-01-03 20:37:27 1 10 5 1940-07-31 2014-01-03 21:37:27 1 10 6 2000-02-18 2014-01-04 18:30:27 1 10 7 1955-08-31 2014-01-04 19:32:27 1 10 8 1983-11-22 2014-01-04 20:31:27 1 10 9 1958-08-09 2014-01-04 21:05:27 1 10 6 60
如果你需要一次性获得总数
SELECT SUM(log_count) total_log_count, SUM(amount) total_amount
FROM log
WHERE log_datetime >= '2014-01-03'
AND log_datetime < '2014-01-04' + INTERVAL 1 DAY
BTW:请勿在{{1}}子句中将DATE()
函数应用于log_datetime
。在这种情况下,它不仅无用,而且还会使您对该列的任何索引的使用无效,从而有效地导致完整扫描。
输出:
| TOTAL_LOG_COUNT | TOTAL_AMOUNT | |-----------------|--------------| | 6 | 60 |
这是 SQLFiddle 演示