MySQL STR_TO_DATE()返回无效日期


MySQL STR_TO_DATE() returns invalid date

我们的网站需要注册。最近,注册过程在很多情况下明显失败。我在PHP代码中实现了几个日志来开始跟踪这一点。在可能的情况下,包括一个跟踪mysql_last_error()的输出。

我的下一步是编写一个脚本,该脚本为不同的必填字段生成带有随机值的注册请求。我的逻辑是,如果这会产生一个问题——问题出在后端逻辑上,如果没有——问题出在服务器负载上。(顺便说一句,这个逻辑合理吗?)

当我发送了很多这样的邮件(我想说大约150),我只得到三个错误,mysql_last_error日志显示如下:

  • [Wed May 21 13:20:45.000000 2014]不正确的日期值:'1964-11-31'列'dob'在第一行

  • [Wed May 21 13:48:37.000000 2014]不正确的日期值:'1963-11-31'列'dob'在第一行

  • [Wed May 21 13:48:37.000000 2014]不正确的日期值:'1967-02-29'列'dob'在行1

请求以JSON格式发送,其dob字段的格式为mm/dd/yyyy。我的PHP代码中的SQL随后看起来像这样:

"STR_TO_DATE('".$cleanUser['dob']."', '%m/%d/%Y')"

我也尝试在MySQL工作台内执行此操作,以将其与可能的坏代码隔离开来。但它在那里也失败了。我就是不明白是什么问题,为什么它只在某些日期发生。

所有的帮助将非常感激,

11月只有30天,所以日期1964-11-31不存在。

而且1967年不是十六进制年,所以今年2月只有28天。

顺便说一句,使用参数化查询而不是SQL连接,以避免将查询开放给SQL注入。

我认为错误来自数据格式。%m表示单词中的月份。1月,2月等。所以你能不能用mm或mm格式来表示日期

你可以在php手册页看到更多的细节http://www.php.net/manual/en/datetime.formats.date.php