0

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

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

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

  • [2014 年 5 月 21 日星期三 13:20:45.000000] 日期值不正确:第 1 行的列“dob”的日期值不正确:“1964-11-31”

  • [2014 年 5 月 21 日星期三 13:48:37.000000] 日期值不正确:第 1 行的“dob”列的“1963-11-31”

  • [2014 年 5 月 21 日星期三 13:48:37.000000] 日期值不正确:第 1 行的列 'dob' 的日期值不正确:'1967-02-29'

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

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

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

所有帮助将不胜感激,在此先感谢

4

2 回答 2

1

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

而1967年又不是双六合年,所以今年2月只有28天。

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

于 2014-05-22T07:50:13.187 回答
0

我认为错误来自数据格式。%m 表示月份。一月,二月等。所以请您使用 mm 或 MM 格式日期

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

于 2014-05-22T07:56:52.477 回答