如何使用输入的DOB存储该人的年龄,但不起作用

问题描述

此处DOB具有输入文本字段的值

 $DOB = $_POST['DOB'];
 $today = date("d-m-Y");
 $diff = date_diff(date_create($DOB),date_create($today));
 echo 'Age is '.$diff->format('%y');
 $a = $diff->format('%y');
 $age = $_POST[$a];

这是插入查询

 $sql="INSERT INTO details (`id`,`email`,`member_id`,`name`,`DOB`,`gender`,'age')
       VALUES (NULL,'$email2','$member_id','$name','$DOB','$gender','$age')";
 $query=mysqli_query($con,$sql);

我认为这是静态问题,我想它需要使用输入文本值动态完成吗?如何获取输入的文本值,以便存储从DOB字段中输入的生日起的年龄?

解决方法

我不建议将年龄存储在数据库中。这是一个派生信息,其值会随着时间变化。存储后的1年内,它将变得过时。

您可以使用大多数数据库中提供的简单日期函数轻松地直接在查询中计算年龄(当然,假设您将dob存储为合法的date数据类型)。假设您正在运行MySQL:

timestampdiff(year,dob,current_date) as age

如果要经常键入此内容,则可以考虑创建一个视图:

create view v_details as
select d.*,timestampdiff(year,current_date) as age
from details d

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...