使用time()更新MySQL TIMESTAMP字段?

时间:2009-03-30 07:14:19

标签: php mysql

以下是通过phpMyAdmin导出的感兴趣的表:

CREATE TABLE IF NOT EXISTS `users` (
  `ip` varchar(20) NOT NULL,
  `lastcheck` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  UNIQUE KEY `ip` (`ip`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

以下是查询:

mysql_query("REPLACE INTO users SET ip = '$uip', lastcheck = '$tim'") or throwerror("part2 ".mysql_error());  

$ tim设置为time();

现在由于某种原因,lastcheck仍然设置为00:00:00。

有人可以帮忙吗?感谢。

2 个答案:

答案 0 :(得分:4)

我不确定我是否理解你的问题,查看列lastcheck声明CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP这意味着当你更新(ip ='$ uip')这一列时,自动更新日期也会发生在lastcheck上。这意味着您可以按如下方式写下更新语句:

REPLACE INTO users SET ip = '$uip'; 

那也应该更新lastcheck字段,我认为最好使用mysql日期函数存储日期/时间,而不是在php中编写它们并将它们保存为数据库中的字符串......

答案 1 :(得分:2)

尝试使用日期('Y-m-d H:i:s')代替时间()

php中的

time()返回一个unix时间戳,这不是MyySQL datetime的有效插入

希望这会有所帮助