Я создал новый столбец даты, и по умолчанию он 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 работает там. Извините, что трачу все время, я ценю быстрые ответы.
Если мы не уверены в том, как дата возвращается, попробуйте использовать дату и strtotime вместе, чтобы обеспечить правильный формат:
if (date('Y-m-d', strtotime($row['date'])) > '0000-00-00'){
//Valid
}
Просто используйте 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
}
Вы можете проверить следующее условие, а не ваше...
Там strtotime()
возвращает false, если в нем нет конкретной строки даты или для правильной проверки пустой строки вы можете использовать функцию empty()
и для проверки того, что строка содержит '0000-00-00'
как данные, вы можете использовать strpos()
как показано ниже:
if(empty(trim($row['date'])) || (strpos($row['date'], '0000-00-00') !== false) || (!strtotime($row['date'])))
{
// empty date
}