Php MySQL日期:0000-00-00:00:00
在我的问题中:Php MySQL日期:0000-00-00:00:00,php,mysql,Php,Mysql,在我的问题中: $cselect = mysql_real_escape_string($_POST['cselect']); --------------- --------------- $sql = sprintf("INSERT INTO content (id, catID, title, abstract, body, status, published, date, description_meta, key
$cselect = mysql_real_escape_string($_POST['cselect']);
---------------
---------------
$sql = sprintf("INSERT INTO content
(id, catID, title, abstract, body, status, published, date, description_meta, keywords_meta)
VALUES ('', '%s', '%s','%s','%s','%s','%s','%s','', '' )", $cselect,$chead, $cabst,$ctext, $cp, $cradio, 'TIMESTAMP: Auto NOW()');
日期的输出为:
0000-00-00 00:00:00
我的查询有什么问题?时间戳:Auto NOW()
绝对不是时间戳字符串的正确值,MySQL会以静默方式(除非您检查警告或启用严格模式)将其转换为零时间戳
您应该使用函数
NOW()
(不带引号)或者更确切地说是CURRENT\u TIMESTAMP
。您可以使用date('Y-m-d h:i:s')
而不是'TIMESTAMP:Auto NOW()'来获取当前时间。您使用sprintf()的原因是什么?除了强制将内容作为字符串处理外,您不会格式化任何值。使用
$sql=不要在查询中指定日期,而是将Date
列更改为Timestamp
类型,然后将其默认值设置为CURRENT\u Timestamp
通过这种方式,您甚至不需要在查询中处理date
列,MySQL将在接收到insert查询时以UTC插入实际日期,从而为您处理这一问题
下面是更改日期列的SQL查询:
我希望这能有所帮助。With NOW():致命错误:调用未定义的函数NOW(),当前时间戳输出为0000-00-00 00:00:00NOW()是一个MySQL函数,而不是PHP函数。因此,请将其保留在引号内。是的,您需要在PHP代码中引用它,但不能像原始sprintf那样在SQL中引用。With NOW():致命错误:调用未定义的函数NOW(),因为没有零年,所以该日期的格式不正确。
$sql = <<<EOL
INSERT INTO content
(id, catID, title, abstract, body, status, published, date, description_meta, keywords_meta)
VALUES
('', '$cselect', '$chead','$cabst','$ctext','$cp','$cradio', NOW(),'', '' );
EOL;
ALTER TABLE `content ` CHANGE `date` `date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP