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

PHP中如何从当前周开始生成全年剩余周的MySQL INSERT语句

解决方案:从当前周开始生成INSERT语句

没问题,我来帮你调整代码,让它从当前周(第13周)开始生成到当年最后一周的INSERT语句。核心思路是把循环的起始时间从当年第一周的周一,改成当前周的周一,同时修正你代码里的一个小语法错误。

修改后的完整代码

define('NL', "\n");
$ddate = date("Y/m/d");
$date = new DateTime($ddate);
$currentyear = $date->format("Y");
$week = $date->format("W");
echo "Current Year: $currentyear", NL;
echo "Weeknumber: $week", NL;

$year = $currentyear;
// 关键修改:获取当前周的周一作为循环起始点
$currentWeekMonday = strtotime('monday this week', strtotime($ddate));
$nextSunday = $currentWeekMonday; // 沿用你原来的变量名保持逻辑连贯

while (date('Y', $nextSunday) == $year) {
    // 修正语法错误:调整$year的单引号位置,同时准确获取当前循环对应的周数
    $insertWeek = date('W', $nextSunday);
    $insert = "INSERT INTO history (`WEEK`, `YEAR`, `ADDDATE`, `USERNAME`) VALUES ($insertWeek, '$year', NOW(), 'jbeasley')";
    echo $insert, NL;
    $nextSunday = strtotime('+1 week', $nextSunday);
}

关键修改说明

  1. 调整循环起始点:
    原来的代码从当年1月1日的周一启动循环,现在我们用strtotime('monday this week', strtotime($ddate))直接定位到当前日期所在周的周一,确保循环从当前周开始。
  2. 修正语法错误:
    你原代码的INSERT语句里$year'多了一个单引号,改成'$year'才能避免SQL语法报错。
  3. 精准获取周数:
    新增$insertWeek = date('W', $nextSunday),确保每次循环都能正确拿到当前时间对应的周数,避免因时间计算逻辑导致的周数偏差。

预期输出

运行后会生成从第13周开始到2021年最后一周的INSERT语句,和你期望的格式完全一致:

INSERT INTO history (WEEK, YEAR, ADDDATE, USERNAME) VALUES (13, '2021', NOW(), 'jbeasley')
INSERT INTO history (WEEK, YEAR, ADDDATE, USERNAME) VALUES (14, '2021', NOW(), 'jbeasley')
...
INSERT INTO history (WEEK, YEAR, ADDDATE, USERNAME) VALUES (52, '2021', NOW(), 'jbeasley')

内容的提问来源于stack exchange,提问作者John Beasley

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 11:52:32