2012-01-09 2 views
1

Я хочу сохранить дату и время с PHP на SQL. Вот SQL заявление, чтобы вставить новую запись (найденный в методе внутри класса):Сохранить дату/время с PHP на SQL

INSERT INTO tbl_reviews (headline, text, date, rating, product_id, username) 
      value (:headline, :text, :date, :rating, :product_id, :username) 

И в моей странице .php, я называю текущую дату и время, используя $_SERVER['REQUEST_TIME']. Но все же я получаю сообщение об ошибке «Неверное значение даты и времени». Что я могу использовать для получения даты?

ответ

2

Есть ли у нее быть точным временем запроса? Вы можете сделать свою жизнь проще и просто использовать:

INSERT INTO tbl_reviews (headline, text, date, rating, product_id, username) 
      value (:headline, :text, now(), :rating, :product_id, :username) 

MySQL вставляет текущую дату, как только ваша запись будет записана в таблицу.

6

Ваш временной метки может быть сгенерированы:

$timestamp = date('Y-m-d H:i:s'); 

Это должно имитировать MySQL метку времени и даты-времени форматов.

Предполагая, что MySQL имеет метку времени синхронизируются с сервером PHP в вопросе, вы можете просто использовать MySQL текущие функции временной метки:

NOW() или CURRENT_TIMESTAMP или CURRENT_TIMESTAMP()

+3

-1? Может ли downvoter объяснить, в чем проблема с этим ответом? –

0

это только предположение, но $ _SERVER ['REQUEST_TIME'] возвращает float, а не действительный формат даты и времени.

0

Если вам нужно текущее время вы можете сделать это так:

INSERT INTO tbl_reviews (headline, text, date, rating, product_id, username) 
INSERT INTO tbl_reviews ('$headline', '$text', CURDATE(), '$rating', '$product_id', '$username'); 
0
date_default_timezone_set('US/Eastern'); 
$cur_date=date("Y-m-d"); 
0

Вы можете использовать собственное значение CURRENT_TIMESTAMP SQL, чтобы получить автоматически отформатированный метку времени.

Что касается $ _SERVER ['REQUEST_TIME'], вы можете просто использовать time() или microtime().

Как уже упоминалось, REQUEST_TIME, а также time() и microtime() возвращают UNIX timestamp, что составляет в основном количество секунд, прошедших с эпохи UNIX, которые не совпадают с форматом поля DATETIME.

+0

Скорее всего, здесь не имеет отношения, но стоит также отметить, что $ _SERVER ['REQUEST_TIME'] возвращает метку времени начала запроса, а не тот, который находится в тот момент (время микросов и время). – MichD

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