MySQL STR_TO_DATE()返回无效日期

时间:2014-05-22 07:45:04

标签: php mysql date str-to-date

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

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

当发送其中许多(我说大约150个)时,我只得到了三个错误,而mysql_last_error日志显示了这个:

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

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

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

请求以JSON格式发送,其dob字段采用mm / dd / yyyy格式。 我的PHP代码中的SQL随后如下所示:

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

我也尝试在MySQL Workbench中执行此操作,以将其与可能的错误代码隔离开来。但它也失败了。我根本不明白什么是问题,为什么它只在某些日期发生。

非常感谢所有帮助, 在此先感谢

2 个答案:

答案 0 :(得分:1)

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

1967年不是一个双年份,所以今年2月只有28天。

BTW,使用参数化查询而不是SQL连接,以避免让您的查询对SQL注入开放。

答案 1 :(得分:0)

我认为错误来自数据格式。 %m表示几个月的单词。 1月,2月.etc那么请你使用mm或MM格式到目前为止

您可以在php手册页上看到更多详细信息 http://www.php.net/manual/en/datetime.formats.date.php