代码之家  ›  专栏  ›  技术社区  ›  unrelativity

使用time()更新MySQL时间戳字段?

  •  0
  • unrelativity  · 技术社区  · 16 年前

    以下是通过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仍然设置为0000-00-00:00:00。

    有人能帮忙吗?谢谢

    2 回复  |  直到 16 年前
        1
  •  4
  •   Ronald Conco    16 年前

    我不确定我是否理解您的问题,查看列lastcheck declaration CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP这意味着当您更新(ip='$uip')此列时,lastcheck也会自动更新日期。这意味着您可以编写更新语句,如下所示:

    REPLACE INTO users SET ip = '$uip'; 
    

    这也会更新lastcheck字段,我认为使用mysql日期函数来存储日期/时间比用php编写并在数据库中保存为字符串更好。。。

        2
  •  2
  •   Kennethvr    16 年前

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

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