PHP - Помещение даты в таблицу MySQL - PullRequest
0 голосов
/ 22 марта 2012

У меня, скорее всего, очень простой вопрос ... Я проектирую простую систему блогов и пытаюсь поместить текущую дату в таблицу, где хранится запись блога, ожидая одобрения администратора. но метод, который я использовал, помещает 0000-00-00 в столбец даты! Я использую следующее:

$query = "INSERT INTO blogentry VALUES ('".$mnam."','".date('d-m-Y h:m:s') ."\n"."','".$mcom."','".$approve."')";

Я относительно новичок в php, поэтому постоянно сталкиваюсь с подобными ошибками ... но, похоже, я не гуглю эту!

Спасибо, ребята!

Ответы [ 4 ]

3 голосов
/ 22 марта 2012

Так что самый простой способ сделать это - просто позволить MySQL справиться с этим с помощью функции NOW():

INSERT INTO blogentry VALUES( ..., NOW(), ... )

Другой вариант - использовать TIMESTAMP s, изменив таблицу - установите для столбцавведите TIMESTAMP с помощью DEFAULT CURRENT_TIMESTAMP, и вы можете просто игнорировать этот столбец при вставке - он будет автоматически заполнен текущим временем.Вам нужно будет указать столбцы, в которые вы вставляете, чтобы пропустить столбец:

INSERT INTO blogentry( column1, column2 ) VALUES( column1value, column2value )

Наконец, вы NEED , чтобы очистить ваши входные данные.Предпочтительно использовать подготовленные заявления и PDO (http://php.net/manual/en/pdo.prepared-statements.php), или, по крайней мере, использовать mysql_real_escape_string.

2 голосов
/ 22 марта 2012

Из руководства MySQL по DATE, DATETIME

Тип DATE используется для значений с частью даты, но без части времени.MySQL извлекает и отображает значения ДАТА в формате 'ГГГГ-ММ-ДД' .Поддерживаемый диапазон: '1000-01-01' до '9999-12-31' .

Это означает, что вы должны вставить даты вYYYY-MM-DD формат.Вы используете date('d-m-Y h:m:s') формат.Измените это значение на date('Y-m-d'), и оно должно быть вставлено правильно.

Если вы также хотите указать время, вам нужно изменить тип данных столбца на DATETIME, а затем вставить в формате date('Y-m-d H:i:s').

Как уже упоминалось, вы можете вместо этого использовать тип столбца INT и сохранить метку времени Unix, которая хранится в UTC, чтобы она была более переносимой.Затем вы можете легко манипулировать отметкой времени для вывода даты любым удобным вам способом.

1 голос
/ 22 марта 2012

Попробуйте просто сохранить результат strtotime () .Он создает уникальную временную метку, которую затем можно проанализировать, если она понадобится вам в будущем.

0 голосов
/ 22 марта 2012

Возможно, вам понадобится указать метку времени для функции даты:

date('d-m-Y h:m:s', strtotime('now'))

Кроме того, чтобы сделать стандартный формат даты и времени:

date('Y-m-d H:i:s', strtotime('now'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...