我们的网站需要注册。最近,注册过程在很多情况下明显失败。我在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