0

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

4

5 回答 5

5
$date = $date_time->format('Y-m-d H:i:s');

INSERT INTO .... VALUES (..., '$date');
于 2012-12-14T15:06:37.837 回答
1

为日期提供字符串格式,如下所示:

date_format(变量,“字符串格式”)

例如 date_format($date_time, "%m/%d/%y")。

于 2012-12-14T15:10:25.017 回答
1

这是因为您试图通过在 SQL 查询中用 '' 将 $date_time 类型化为字符串。删除周围的引号或通过执行以下操作转换为字符串:

$date_time->format('Y-m-d H:i:s');
于 2012-12-14T15:06:09.893 回答
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 注入。

于 2012-12-14T15:06:51.003 回答
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')}')");
?>
于 2012-12-14T15:09:02.467 回答