Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.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-使用STR#u TO#u DATE update datetime列,但它';已更新的空记录,如;0000-00-00:00:00”;_Php_Mysql_Sql_Datetime - Fatal编程技术网

PHP-使用STR#u TO#u DATE update datetime列,但它';已更新的空记录,如;0000-00-00:00:00”;

PHP-使用STR#u TO#u DATE update datetime列,但它';已更新的空记录,如;0000-00-00:00:00”;,php,mysql,sql,datetime,Php,Mysql,Sql,Datetime,记录更新为空的reg_date_time=“0000-00-00:00:00” 如果 只有当注册表日期包含小时值时,记录才会正确更新。您设置了错误的日期格式和错误的引号: $reg_date ="10-09-1985 01:00:00" 问题在于格式%h:%i:%s mysql> select str_to_date('10-09-1985 00:00:00','%d-%m-%Y %h:%i:%s'); +----------------------------------------

记录更新为空的reg_date_time=“0000-00-00:00:00”

如果


只有当注册表日期包含小时值时,记录才会正确更新。

您设置了错误的日期格式和错误的引号:

$reg_date ="10-09-1985 01:00:00" 

问题在于格式
%h:%i:%s

mysql> select str_to_date('10-09-1985 00:00:00','%d-%m-%Y %h:%i:%s');
+--------------------------------------------------------+
| str_to_date('10-09-1985 00:00:00','%d-%m-%Y %h:%i:%s') |
+--------------------------------------------------------+
| NULL                                                   |
+--------------------------------------------------------+
下面是mysql中发生的事情

$query = "UPDATE User 
          SET reg_date_time =  STR_TO_DATE('".$reg_date."','%Y-%m-%d %h:%i:%s'), 
          WHERE pk_item = '$id'";
因此,它返回NULL并在插入时不继续,因此您需要使用格式
%H:%i:%s

mysql> select str_to_date('10-09-1985 00:00:00','%d-%m-%Y %h:%i:%s');
+--------------------------------------------------------+
| str_to_date('10-09-1985 00:00:00','%d-%m-%Y %h:%i:%s') |
+--------------------------------------------------------+
| NULL                                                   |
+--------------------------------------------------------+
对于
10-09-1985 01:00:00
而言,日期格式在
%h:%i:%s时有效,因此其工作正常


最好选择日期格式
Y-m-d H:i:s
,即使输入日期也是如此,因为
10-09-1985 01:00:00
无法判断其上午或下午以及以后的日期计算变得非常困难

我得到
解析错误:语法错误,意外的“$query”(T_变量)
与您的代码:-?我使用了您的日期格式它对我不起作用它在更新列中给我“0000-00-00:00:00”值
mysql> select str_to_date('10-09-1985 00:00:00','%d-%m-%Y %H:%i:%s');
+--------------------------------------------------------+
| str_to_date('10-09-1985 00:00:00','%d-%m-%Y %H:%i:%s') |
+--------------------------------------------------------+
| 1985-09-10 00:00:00                                    |
+--------------------------------------------------------+