PHP - вычитание текущего года с целым числом или строкой

1

У меня есть следующие столбцы в моей таблице: birth_year, birth_month, birth_day

пример данных из таблицы

birth_year         birth_month        birth_day
1996               April              1

Мне нужно только получить возраст пользователя.

Это не обязательно быть точным. Мне просто нужно вычитать год сегодня и его/ее birth_year

пример:

его birth_year - 1996 год

и сегодняшний день - 2015 год

if($row = mysqli_fetch_assoc($query_run)
{
       $birth_day = $row['birth_year'];    //data from the database which equals to 1996
       $today = date("Y");                 //year today
       $age = $today - $birth_day;        //age of this user
        echo $age;                        //this should output 19
}

Моя проблема - переменная $age из вышеперечисленного, которая возвращает пустое или нулевое значение.

вот источники, которые могут быть похожи на мой вопрос:

источник 1 источник 2

Разница между моим вопросом и тем, что я не могу следовать за форматом DateTime потому что моя форма регистрации выглядит так.

Изображение 174551

  • 0
    Вы не должны хранить данные даты в трех отдельных столбцах в базе данных. Все СУБД посвятили типы для этого, как datetime или timestamp .
  • 0
    Вместо того , чтобы echo ИНГ переменные, используйте var_dump , так что вы можете увидеть его тип. Вы, вероятно, используете арифметику со строкой ..
Показать ещё 1 комментарий
Теги:

2 ответа

2
Лучший ответ

Попробуй использовать

$age = intval( $today ) - intval( $birth_day );

Также проверьте, возвращает ли ваш запрос mysql то, что вы ожидаете (вы не предоставили его, поэтому его трудно проверить).

  • 0
    ваш код ничего не выводит, да мой запрос сработал. я пытался повторить это только сейчас. и это дает мне значение 1996 года
  • 0
    Извините, я написал его с большой буквы, но он должен быть интал без капитала. Можете ли вы попробовать еще раз, потому что это должно работать.
Показать ещё 9 комментариев
0

попробуйте это с datetime:

if($row = mysqli_fetch_assoc($query_run){
    $birth_day = $row['birth_year'];
    $bday = new DateTime($birth_day);
    $today = new DateTime(date("Y"));
    $age = $today->diff($bday);
    echo $age->y;
}

Ещё вопросы

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