| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Вопрос по MySQL |
| Автор: aktuba 22.8.2007, 12:14 | ||
Есть таблица в базе. В таблице есть поле, тип DATETIME. Хочу туда занести дату время, делаю следующее:
Не работает. Заносятся нули. Почему? |
| Автор: Rigel 22.8.2007, 12:26 | ||||
Я не знаю всю структуру таблицы, однако сильно подозреваю, что твое поле стоит не вторым... Пиши лучше так: $sql="INSERT INTO `tbltemp` (field, date) VALUES('$wr',NOW())"; И будет тебе щастье... |
| Автор: aktuba 22.8.2007, 12:31 | ||||
Да суть не в этом. Да, оно не второе, но до него и после все нормально вставляется, а именно оно нет. Полный запрос выглядит примерно так:
|
| Автор: Rigel 22.8.2007, 12:37 | ||||||
Значит, формат даты в переменной неверный. Если нужно вставить дату текущего момента, напиши так, как я показал в предыдущем письме - команда NOW() |
| Автор: silverghost 22.8.2007, 14:55 | ||
Если не нравится формат то можно и так
|
| Автор: aktuba 22.8.2007, 17:51 |
| -=Ustas=-, спасибо за подробное объяснение. + |
| Автор: BrainWorker 22.8.2007, 18:03 | ||||
Ты в своем запросе полю id (как я понимаю это первичный ключ) ставишь значени NULL! Если ты полагаешься на автоматическую генерация ключа при создании новой записи, то не указывай id в списке полей запроса INSERT, но если указываешь, то указывай разумные и допустимые значения. ID не может быть NULL ПО ОПРЕДЕЛЕНИЮ |
| Автор: sw04 23.8.2007, 00:20 | ||
почему бы не так? |
| Автор: SelenIT 23.8.2007, 01:11 | ||
-=Ustas=-, т.е. если в DATETIME-поле сунуть число, например, 20070823 или 20070823125959, то в итоге из-за несовпадения типов запишется дата 0000-00-00 00:00:00? В каких случаях и для каких типов таблиц это так (только что поэкспериментировал с MyISAM - не воспроизвелось, записалась сегодняшняя дата...)? Ни в коей мере не хочу снова поднять холивор на тему "INT vs. DATETIME", просто спрашиваю;) |
| Автор: Severyanin 23.8.2007, 07:37 |
| Для MyISAM вообще обычно выдает ошибку записи - несовпадение типов, и не записывает ничего. Оператор INSERT не выполняется. |
| Автор: sTa1kEr 23.8.2007, 09:08 | ||||||
Нет, во всех типах таблицах все будет записываться корректно, если, конечно, формат верный и mysql удастся распарсить число. http://dev.mysql.com/doc/refman/4.1/en/datetime.html - здесь все подробно расписано как работает MySQL с датами.
Единственный момент, когда могут быть проблемы с датами - это при работе через pdo_mysql с Prepared Statements. При биндинге даты она должна быть формата YYYY-MM-DD HH:MM:SS. Хотя это могли уже поправить, я не проверял. |