2015-03-14 2 views
-1

Вот моя таблица Num структура:Как правильно вставить метку времени в mysql с php?

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

Вы эхо -> '$ time = $ _ SERVER ['REQUEST_TIME'];'? –

ответ

1

Чтобы вставить текущую временную метку, используйте:

$query="INSERT INTO num(time) VALUES (CURRENT_TIMESTAMP)"; 

Если ваш сервер времени отличается от того, что вы хотите, вы можете добавить часов (или минут, и т.д.) на временной метки:

$query="INSERT INTO num(time) VALUES (CURRENT_TIMESTAMP + INTERVAL 6 HOUR)"; 
-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 будет использовать значение по умолчанию (в настоящее время).

Pro tip: Не называйте столбец timestamp, потому что это зарезервированное слово. Вы должны обернуть его в backticks в некоторых контекстах. Для этого разработчики используют ts.

+0

спасибо за исправление. –

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