我正在尝试将日期时间插入到mysql表的列中。
<?php
//Some code
date_default_timezone_set('Europe/London');
//Other variables defined also
$date_time = new DateTime();
$queryreg = mysql_query ("
INSERT INTO users VALUES ('','$username','$password','$email','$website','$image','$date_time')
");
?>
然而,浏览器声明:“可捕获的致命错误:类别DateTime的对象无法在第181行的C:\ xampp \ htdocs \ design \ register.php中转换为字符串”。知道为什么这样做吗?提前谢谢了。
答案 0 :(得分:5)
$date = $date_time->format('Y-m-d H:i:s');
INSERT INTO .... VALUES (..., '$date');
答案 1 :(得分:1)
这是因为你试图通过在SQL查询中用''包围它来将$ datetime强制转换为字符串。通过执行以下操作删除周围的引号或转换为字符串:
$date_time->format('Y-m-d H:i:s');
答案 2 :(得分:1)
您必须使用$datetime->format('Y-m-d H:i:s')
进行插入,如下所示:
INSERT INTO users VALUES ('', '$username', '$password', '$email', '$website', '$image', '{$date_time->format('Y-m-d H:i:s')}')
我还建议不要使用mysql_*
函数,而是学习使用PDO
预备语句或至少mysqli_*
函数。
还要清理您的输入以防止SQL注入。
答案 3 :(得分:1)
为日期提供字符串格式,如下所示:
date_format(变量,“字符串格式”)
例如,date_format($ date_time,“%m /%d /%y”)。
答案 4 :(得分:0)
最佳解决方案是在表中设置时间戳字段,默认值为CURRENT_TIMESTAMP。
但是如果你想手动控制这个,那么你需要将DateTime对象转换为这样的字符串:
<?php
//Some code
date_default_timezone_set('Europe/London');
//Other variables defined also
$date_time = new DateTime();
$queryreg = mysql_query("INSERT INTO users VALUES
('','$username','$password','$email','$website','$image',
'{$date_time->format('Y-m-d H:i:s')}')");
?>