Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL STR_TO_DATE()返回无效日期_Php_Mysql_Date_Str To Date - Fatal编程技术网

Php MySQL STR_TO_DATE()返回无效日期

Php MySQL STR_TO_DATE()返回无效日期,php,mysql,date,str-to-date,Php,Mysql,Date,Str To Date,我们的网站需要注册。最近很明显,注册过程在很多情况下都失败了。我在PHP代码中实现了几个日志来开始跟踪它。包括一个用于跟踪mysql_last_error()的输出(如果可能) 我的下一步是编写一个脚本,为不同的必填字段生成带有随机值的注册请求。我的逻辑是,如果这产生了问题——问题在于后端逻辑,如果没有——问题在于服务器负载。(顺便问一下,这是合理的逻辑吗?) 当发送其中许多(我会说大约150个)时,我只收到三个错误,mysql_last_错误日志显示: [Wed May 21 13:20:4

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

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

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

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

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

  • [Wed May 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中执行此操作,以将其与可能的错误代码隔离开来。但它也失败了。我只是不明白问题出在哪里,为什么只在某些日期发生

我们将非常感谢所有的帮助,
提前感谢

11月只有30天,因此日期不存在

1967年不是双性恋年,所以今年二月只有28天


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

我认为错误来自数据格式。%m的意思是月。1月,2月等,所以你能使用mm或mm格式吗

您可以在php手册页面查看更多详细信息

哇,这真让人难堪:-)我不会想到MySQL会验证这一点,所以我甚至不会想到它。非常感谢你的帮助!关于MySQL注入,来自客户端的所有输入都通过MySQL\u real\u escape\u string()函数进行。我不知道什么是参数化查询,所以我会去谷歌学习。如果你有一篇好文章的链接,那就太好了。请参阅。它非常易于使用,并且真正保护了您的查询,而
mysql\u real\u escape\u string
没有()。我认为这对于有关日期和时间的PHP函数来说是正确的,例如strotime()、date\u create()等。我使用的是mysql函数STR\u to\u date(),因此格式字符串的正确参数如下: