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 без ошибок.
  • Вопрос задан
  • 175 просмотров
Решения вопроса 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)."'...... ?>
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы