Обновление поля MySQL TIMESTAMP с использованием time ()? - PullRequest
0 голосов
/ 30 марта 2009

Вот таблица интереса при экспорте через 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: 00.

Кто-нибудь может помочь? Спасибо.

Ответы [ 2 ]

4 голосов
/ 30 марта 2009

Я не уверен, что, возможно, я понимаю вашу проблему, глядя на объявление столбца lastcheck CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, которое означает, что когда вы обновляете (ip = '$ uip') этот столбец, автоматическое обновление даты также происходит при последней проверке. Это означает, что вы можете написать обновленную информацию следующим образом:

REPLACE INTO users SET ip = '$uip'; 

Это также должно обновить поле lastcheck, и я думаю, что лучше использовать функции даты mysql для сохранения вашей даты / времени, чем записывать их в php и сохранять их в виде строки в базе данных ...

2 голосов
/ 30 марта 2009

попробуйте использовать дату ('Y-m-d H: i: s') вместо времени ()

time () в php возвращает метку времени Unix, и это не является допустимой вставкой для MyySQL datetime

надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...