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
相关产品推荐
相关产品推荐

