php datetime插入mysql

时间:2012-12-14 15:02:49

标签: php mysql

我正在尝试将日期时间插入到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中转换为字符串”。知道为什么这样做吗?提前谢谢了。

5 个答案:

答案 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')}')");
?>