2009-03-30 3 views
0

Вот таблица представляет интерес при экспорте через PhpMyAdmin:Обновление поля MySQL TIMESTAMP с использованием time()?

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()); 

$ тим устанавливается равным времени();

Теперь по какой-либо причине lastcheck все еще установлен как 0000-00-00 00:00:00.

Может ли кто-нибудь помочь? Благодарю.

ответ

4

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

REPLACE INTO users SET ip = '$uip'; 

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

+0

Ах, замечательно. Я думал, что, на самом деле, я мог бы предотвратить время PHP и MySQL, имеющее несоответствие или что-то еще ... – unrelativity

+0

Я бы порекомендовал вам посмотреть http://dev.mysql.com/doc/refman/5.1/en/time-zone- support.html, важно иметь дату mysql так же, как и php, это можно установить, когда вы подключаетесь к серверу mysql .... –

2

попробовать использовать дату ('Ymd H: я: s') вместо времени()

времени() в PHP возвращает метку времени Unix и который не является допустимым для вставки MyySQL DateTime

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

Смежные вопросы