这是我的表格数字结构:
mysql> show columns from num;
+-------+-----------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-----------+------+-----+-------------------+-----------------------------+
| ip | char(20) | YES | | NULL | |
| time | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+-------+-----------+------+-----+-------------------+-----------------------------+
2 rows in set (0.00 sec)
我使用以下代码插入记录:
<?php
$ip = $_SERVER['REMOTE_ADDR'];
$time=$_SERVER['REQUEST_TIME'];
$db=mysql_connect("localhost","root","passwd");
$query="insert into num(ip,time) values('$ip','$time')";
mysql_select_db('numdb');
mysql_query($query, $db);
mysql_close();
echo "ok";
?>
将两条记录插入表num后,时间错了 我的数据库或php代码有什么关系?
mysql> select * from num;
+-----------+---------------------+
| ip | time |
+-----------+---------------------+
| 127.0.0.1 | 0000-00-00 00:00:00 |
| 127.0.0.1 | 0000-00-00 00:00:00 |
+-----------+---------------------+
2 rows in set (0.00 sec)
答案 0 :(得分:1)
要插入当前时间戳,请使用:
$query="INSERT INTO num(time) VALUES (CURRENT_TIMESTAMP)";
如果您的服务器时间与您想要的不同,您可以在时间戳中添加小时(或分钟等):
$query="INSERT INTO num(time) VALUES (CURRENT_TIMESTAMP + INTERVAL 6 HOUR)";
答案 1 :(得分:-1)
看起来您想要使用REQUEST_TIME值而不是当前时间。幸运的是,php可以很容易地将请求时间的字符串格式转换为内部时间格式,然后将其转换为
2015-03-14 15:19:27
MySQL表示时间戳所需的标准化字符串格式。这一行将为您提供可行的日期字符串。
$datestring = date('Y-m-d H:i:s', $_SERVER['REQUEST_TIME']);
如果您不关心REQUEST_TIME与当前时间之间的区别,请不要在timestamp
查询中提及INSERT
列,而MySQL将使用默认(当前时间)。
专业提示:不要为列timestamp
命名,因为它是一个保留字。在某些情况下,你必须将它包装在反引号中。许多开发人员使用ts
进行此操作。