You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已有当日/当月跨表求和PHP代码,求一周数据跨表求和固定代码

实现一周数据求和的代码方案

下面提供两种常见的一周数据统计场景的代码,同时优化了原代码的安全性与准确性:

场景1:统计最近7天的数据(含当日)

适合需要“近一周”滚动数据的场景,统计从今天往前推7天内的所有记录:

include 'config_connect.php';

// 计算日期范围:今日和7天前的日期
$today = date('Y-m-d');
$sevenDaysAgo = date('Y-m-d', strtotime('-7 days'));

// 使用参数化查询,避免SQL注入风险
$sql = "SELECT (SUM(total) - SUM(payout)) AS data 
        FROM paid 
        WHERE bill IN (SELECT bill FROM transactionin) 
        AND paydate BETWEEN ? AND ?";

// 准备并执行查询
$stmt = mysqli_prepare($conn, $sql);
mysqli_stmt_bind_param($stmt, "ss", $sevenDaysAgo, $today);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);

// 获取结果,若为NULL则默认返回0
$row = mysqli_fetch_assoc($result);
$data43 = $row['data'] ?? 0;

echo $data43;

场景2:统计自然周的数据(周一至周日)

适合按自然周统计业务数据的场景,可根据需求调整周起始日(比如改为周日):

include 'config_connect.php';

// 计算本周起始和结束日期(此处以周一为周起始,改为'Sunday'则以周日为起始)
$weekStart = date('Y-m-d', strtotime('this week Monday'));
$weekEnd = date('Y-m-d', strtotime('this week Sunday'));

// 参数化查询
$sql = "SELECT (SUM(total) - SUM(payout)) AS data 
        FROM paid 
        WHERE bill IN (SELECT bill FROM transactionin) 
        AND paydate BETWEEN ? AND ?";

$stmt = mysqli_prepare($conn, $sql);
mysqli_stmt_bind_param($stmt, "ss", $weekStart, $weekEnd);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);

$row = mysqli_fetch_assoc($result);
$data43 = $row['data'] ?? 0;

echo $data43;

注意事项

  • 若paydate字段为DATE/DATETIME类型,使用BETWEEN比原代码的LIKE匹配更准确,不会出现格式匹配错误。
  • 参数化查询避免了直接拼接字符串带来的SQL注入风险,更安全可靠。

内容的提问来源于stack exchange,提问作者Hamdan Nuramdani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 02:59:59