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

PHP如何在数据库日期为0000-00-00空值时给当前日期加1天

问题根因

strtotime()处理0000-00-00这类非法日期格式时会返回布尔值false,date()接收到非法参数后无法生成合法的Y-m-d格式日期,最终导致更新操作没有效果。

方案1:PHP层面判断处理

直接在生成$ss变量前增加日期有效性判断即可,修改后代码如下:

$Date = $db_date;
// 判断数据库取出的日期是否为空/无效值
if (empty($Date) || $Date == '0000-00-00') {
    // 无效时取当前系统日期加1天
    $ss = date('Y-m-d', strtotime('+1 day'));
} else {
    // 有效时按原逻辑处理
    $ss = date('Y-m-d', strtotime($Date. ' + 1 days'));
}

$x = $con->prepare("UPDATE ssss SET ss=? WHERE sss=?");
$x->bind_param("ss", $ss, $sss);
$x->execute();

方案2:SQL层面直接处理

也可以把日期计算逻辑放到SQL语句里实现,不需要PHP做判断,代码更简洁:

// 只需要绑定$sss一个参数即可
$x = $con->prepare("UPDATE ssss SET ss = CASE 
    WHEN ss IS NULL OR ss = '0000-00-00' THEN DATE_ADD(CURDATE(), INTERVAL 1 DAY)
    ELSE DATE_ADD(ss, INTERVAL 1 DAY) 
END WHERE sss = ?");
$x->bind_param("s", $sss);
$x->execute();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 17:24:02