PHP OOP中自定义日期未存入MySQL,仅记录当前日期的语法排查
问题分析与解决办法
嘿,我一眼就发现问题所在啦——你不小心把自己处理好的自定义日期给覆盖掉了!
先看你的代码片段:
$this->datearrive = htmlspecialchars(strip_tags($this->datearrive)); $this->datearrive = date('Y-m-d'); $stmt->bindParam(":datearrive",$this->datearrive);
核心问题就在第二行:你先对用户输入的自定义日期做了转义清理(htmlspecialchars(strip_tags(...))),但紧接着又用date('Y-m-d')把$this->datearrive重新赋值成了当前系统日期,这直接导致数据库里只能存储当前日期,完全忽略了之前的自定义输入内容。
修正方案
如果你要保存用户输入的自定义日期,只需要删掉那行覆盖日期的代码即可:
// 保留对输入日期的安全清理 $this->datearrive = htmlspecialchars(strip_tags($this->datearrive)); $stmt->bindParam(":datearrive",$this->datearrive);
另外给你两个小建议:
- 最好对用户输入的日期做格式验证,确保它是合法的
Y-m-d格式,比如用DateTime::createFromFormat来校验,避免无效日期存入数据库。 - 如果你的数据库字段是
DATE类型,要确保传入的日期格式符合MySQL的要求,不然可能出现存储异常。
内容的提问来源于stack exchange,提问作者Bernardo Alcantara III
相关产品推荐
相关产品推荐

