Задать вопрос
kimono
@kimono
Web developer

Кто может объяснить «странное» поведение в MySQL и поможет исправить ошибку?

В таблице есть поле типа DATETIME и оно может быть NULL.
Когда пользователь не заполняет соответствующее поле в HTML форме, естественно его значение будет пустой строкой. Далее делается запрос вида:
UPDATE `tbl` SET ...bla bla bla... `d` = DATE(:date)

он не проходит, возникает ошибка Error Code: 1292. Incorrect datetime value: ''
Хотя запрос
SELECT DATE('')
как положено выдает NULL без ошибок.
  • Вопрос задан
  • 176 просмотров
Подписаться 1 Оценить 2 комментария
Решения вопроса 1
kimono
@kimono Автор вопроса
Web developer
Заменил на:
UPDATE `tbl` SET ...bla bla bla... `d` = IF(:date, DATE(:date), NULL)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
Таки null и "" это 2 разные вещи
Ответ написан
Проверяйте значение перед вставкой и если оно пустое задайте в явном виде $date=0; `d`='".$date."'
Ответ написан
Комментировать
grigruss
@grigruss
Мне вообще плевать на ИТ, спецов и без меня хватае
<?php ........`d`='".(($date=="")?"0000-00-00 00:00:00":$date)."'...... ?>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы