|
我是PHP新手,还在学习。我觉得我的注册表有问题。username,password,email所有插入到MySQL成功。registered而且last_seen不要。
% {* Y6 N: Y/ h I6 G# u我以为我用getTimestamp()错了,但这呼应了我的需要。然而,当我试图插入两个时间戳字段时MySql当时,我看到了一万-00-000:00:00:00是这些字段,而不是它sql查询之前显示的内容。我在这里做错了什么?非常感谢任何帮助。1 V# d) U6 i! z+ @/ H8 @
$date = new DateTime(); $time = $date->getTimestamp(); echo '' . $time . ' $sql = INSERT INTO users (username,password,email,registered,last_seen) VALUES (:username,:password,:email,:registered,:last_seen) $stmt = $pdo->prepare($sql); $stmt->bindParam(':username',$username); $stmt->bindParam(':password',$password); $stmt->bindParam(':email',$email); $stmt->bindParam(':registered',$time); $stmt->bindParam(':last_seen',$time); $stmt->execute(); print 'errorCode() ' . $stmt->errorCode() . '
4 |7 t- c) A; D+ D( ] print_r($stmt->errorInfo(); echo ' echo 'Registered successfully!';这就是SHOW CREATE TABLE users;给我看的东西。
6 H! @) C; o3 ~; ^) e: O6 wCREATE TABLE `users` `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'User''s unique ID number听 `username` varchar(16) NOT NULL,听 `password` varchar(100) NOT NULL,听 `email` varchar(254) NOT NULL,听 `registered` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00听 `last_seen` timestamp NOT NULL DEFAULT '0000-00-00 0:00:00,听PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 + V' u, f" ]( L) \- m+ T1 B' Y' N
解决方案: . A; T, a9 X4 u2 @+ `, d
这种情况经常发生。# c6 x# o) y- Y+ e8 G/ A( Q
您将mysql时间戳与UNIX时间戳(实际上是DATETIME类似值)和UNIX时间戳混淆了,后者来自1970-01-经过01的秒数。
. ?+ j+ g0 L9 K G5 {+ m您需要更改字段格式或插入值。/ h! I+ Q' U; o: L$ c* _; j& w) t4 j
你也可以找到一些方便的mysql函数-例如CURDATE()或NOW()
4 c3 l) l. T2 S/ }$sql = 'INSERT INTO users VALUES (NULL,:username,:password,:email,NOW(),NOW())';$stmt = $pdo->prepare($sql);$stmt->execute(array($username,$password,$email));但我个人会避免使用mysql时间戳。它们可能会意外更改,从而破坏了您的所有数据。我会使用DATETIME并手动设置所有值。 |
|