2012-12-14 133 views
0

我想将日期时间插入到mysql表中的列中。PHP日期时间插入到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的对象无法转换为字符串C:\ XAMPP \ htdocs中\设计\线181上register.php”。任何想法为什么这样做?提前谢谢了。

+0

可能重复[在MySQL查询中使用php DateTime对象](http://stackoverflow.com/questions/10489386/using-php-datetime-object-in-mysql-query) –

回答

1

这是因为您正试图通过在SQL查询中用''将字符串包围在字符串中来约束$ date_time。无论是通过做除去两边的引号或转换为字符串:

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

INSERT INTO .... VALUES (..., '$date'); 
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注入。

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

提供日期字符串格式,如:

DATE_FORMAT(例如,变量“字符串格式”)

date_format($ date_time,“%m /%d /%y”)。