回答

收藏

MySQL我的时间戳值正在转换为0000-00-00

技术问答 技术问答 195 人阅读 | 0 人回复 | 2023-09-14

我是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并手动设置所有值。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则