我的表格如下:
CREATE TABLE EMPLOYEE(
ID INT(3) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(20) NOT NULL,
Age INT(3) NOT NULL,
Date DATE
);
日期存储用户的出生日期。我必须从出生日期开始计算年龄。我首先输入DOB并将名称输入到DB。 我现在通过以下方式检索最后一次自动增量:
$last=mysqli_insert_id($sqli);
echo "$last";
我现在从DOB中检索年份部分:
$sql="SELECT YEAR(Date) FROM EMPLOYEE WHERE ID='$last'";
$sql2=$sqli->query($sql);
if($sql2)
{
echo "date retrieved";
$row=mysqli_fetch_array($sql2);
$rdate=$row['YEAR(Date)']; // Year part DOB stored
echo "$rdate";
}
我通过以下方式获取当前日期:
$cdate; //current date
$sql='SELECT YEAR(CURDATE())';
$sql2=$sqli->query($sql);
if($sql2)
{
$row=mysqli_fetch_array($sql2);
$cdate=$row['YEAR(CURDATE())'];
echo "$cdate";
}
我现在通过以下方式计算年龄:
$diff=abs(strtotime($cdate)-strtotime($rdate));
echo "<br/> before divide : ";
echo "$diff";
$diff=floor($diff/(24*60*60*365)); //convert to years
最后,我使用age:
的值更新表 $sql="UPDATE EMPLOYEE
SET Age='$diff' WHERE ID='$last'";
现在的问题是,当我尝试输入类似于2010+的DOB或显示的年龄是0.该程序从&lt; 2000完美地计算年龄。我也有一个输出来显示我的问题:
name is pit
successfulvalue inserted56date retrieved20122018
before divide : 360
age after 1st divide:0age updated
这里的DOB是2012年 请帮助我找到解决方案。我是PHP的新手,需要一些帮助。