PHP操作数据库更新数据时原有日期字段无法修改问题求助
问题解决建议
核心原因
你当前代码的更新逻辑中没有携带日期字段参数,只有首次插入数据时才会写入teamplaydate字段,这是日期无法更新的直接原因。
修复后的代码
if(isset($_POST['productId'])) { $productId = $_POST['product']; $userId = $_POST['userId']; $teamplay = $_POST['teamplay']; $date = date("Y-m-d H:i:s"); if( $database->has('teamplays', [ 'AND' => [ 'productId' => $productId, 'userId' => $userId ] ]) ) { $database->update('teamplays', [ 'teamplay' => $teamplay, 'teamplaydate' => $date // 新增这行,更新时同步刷新日期 ], [ 'productId' => $productId, 'userId' => $userId ]); } else { $database->insert('teamplays', [ 'teamplay' => $teamplay, 'productId' => $productId, 'userId' => $userId, 'teamplaydate' => $date ]); } }
异常排查项
如果修改后仍无法正常更新日期,可按以下顺序排查:
- 确认数据库
teamplays表的teamplaydate字段类型为datetime或timestamp,没有设置只读、不可修改的约束 - 确认你使用的数据库操作类(从语法判断为Medoo框架)没有配置字段白名单过滤规则,导致
teamplaydate字段被拦截未写入更新语句 - 若字段为
timestamp类型,可直接在表结构中设置ON UPDATE CURRENT_TIMESTAMP属性,后续更新其他字段时会自动刷新日期值,无需在代码中手动传参
内容的提问来源于stack exchange,提问作者Today's Acapellas
相关产品推荐
相关产品推荐

