PHP проверяет строку mysql на пустую дату

0

Я создал новый столбец даты, и по умолчанию он 0000-00-00 и я хочу проверить, имеет ли он действительную дату или все нули, но ни один из этих кодов не работает для меня, и я не могу понять, почему, Я знаю, что он видит дату, потому что, когда я echo ее, она отображается как нули. Как проверить, установлен ли столбец даты 0000-00-00? Вот что я пробовал, и никто из них не работал.

if (trim($row['date']) == '' || substr($row['date'],0,10) == '0000-00-00') {
    // empty date
}

if (strtotime($row['date']) == '0000-00-00'){
   // empty date
}

if ($row['date'] == '0000-00-00'){
  // empty date
}

EDIT Похоже, что это может быть проблемой для моего ходячего сервера godaddy, я загрузил файлы на бесплатный веб-хостинг, и решение 3 работает там. Извините, что трачу все время, я ценю быстрые ответы.

  • 1
    Почему не работает 3-е, если утверждение? Это выглядит правильно для меня. Вы должны иметь что-то еще, мешающее.
  • 0
    @mickmackusa Я думаю, это проблема моего хостингового сервера, я просто загрузил все на бесплатный веб-хостинг, и там работает третий вариант. Странный вопрос, думаю, мне придется позвонить Годди. UGH ..
Показать ещё 1 комментарий
Теги:
date

3 ответа

0

Если мы не уверены в том, как дата возвращается, попробуйте использовать дату и strtotime вместе, чтобы обеспечить правильный формат:

if (date('Y-m-d', strtotime($row['date'])) > '0000-00-00'){
    //Valid
}
  • 0
    Зачем вообще использовать какие-либо функции? Мой микрофон работает?
0

Просто используйте empty() с strtotime проверит все пустые случаи

<?php
    $row['date'] = '0000-00-00';

    if(empty(strtotime($row['date']))){
        // empty date
    }
    else{
        //not empty date
    }

Если о вашем 3 условии, это должно быть как ниже, а не использовать, if лестница использует else if и во втором условии вы сравниваете целочисленное значение timestamp (strtotime вернет int seconds) к строковой дате ('0000-00-00'), которая находится в правильный

<?php
    $row['date'] = '0000-00-00';
    if (trim($row['date']) == '' || substr($row['date'],0,10) == '0000-00-00') {
        // empty date
    }
    else if(strtotime($row['date']) == strtotime('0000-00-00')){
       // empty date
    }
    else if ($row['date'] == '0000-00-00'){
      // empty date
    }
  • 0
    Зачем вообще использовать какие-либо функции? ОП не говорит нам что-то.
  • 0
    ОП сказал: «Я хочу проверить, есть ли у него действительная дата или все нули»
Показать ещё 1 комментарий
0

Вы можете проверить следующее условие, а не ваше...
Там strtotime() возвращает false, если в нем нет конкретной строки даты или для правильной проверки пустой строки вы можете использовать функцию empty() и для проверки того, что строка содержит '0000-00-00' как данные, вы можете использовать strpos() как показано ниже:

if(empty(trim($row['date'])) || (strpos($row['date'], '0000-00-00') !== false) || (!strtotime($row['date'])))
{
    // empty date
}
  • 1
    Все сошли с ума?
  • 0
    Йоло ... но пост сделан до редактирования ....

Ещё вопросы

Сообщество Overcoder
Наверх
Меню