php - 从今天生日算年龄
问题描述
我制作了一个脚本,显示今天过生日的人。除此之外,我想显示这些人的年龄。我找到了许多可行的解决方案,但我不知道如何在我当前的代码中实现。
这是我当前的代码:
<?php
$sql = "SELECT * FROM birthday WHERE MONTH(dob) = MONTH(NOW()) AND DAY(dob) = DAY(NOW())";
$result = $conn->query($sql);
if($result->num_rows > 0)
{
while($row = $result->fetch_assoc())
{
echo "<p>".$row["first_name"]." ".$row["last_name"]."</p>";
}
}
else
{
echo "There are no birthdays today";
}
$conn->close();
解决方案
编辑:这当然只在你生日那天和之后才正确。但是由于您仅在生日当天显示年龄,所以这个等式在您的情况下是正确的。
年龄不就是当年减去出生年份吗?因此,您可以将选择更改为:
SELECT *, YEAR(NOW()) - YEAR(dob) AS age FROM birthday WHERE MONTH(dob) = MONTH(NOW()) AND DAY(dob) = DAY(NOW())
或者你可以用 php 的方式来做:
$sql = "SELECT * FROM birthday WHERE MONTH(dob) = MONTH(NOW()) AND DAY(dob) = DAY(NOW())";
$result = $conn->query($sql);
$current_year = date("Y");
if($result->num_rows > 0){
while($row = $result->fetch_assoc()){
$birthday = date_parse($row["dob"]);
$age = null;
if(is_array($birthday)){
$age = $current_year - $birthday["year"];
}
echo "<p>".$row["first_name"]." ".$row["last_name"]." is now " + $age + " years old.</p>";
}
}
else{
echo "There are no birthdays today";
}
$conn->close();
推荐阅读
- php - 基于 url 字符串在 iframe 中加载页面
- android - 添加 placeautocomplete 编译时未找到与给定名称匹配的资源(在“背景...”处)
- c# - 在 Asp.net Core 中使用 InstaSharper 将照片上传到 Instagram
- android - kotlin Android Studio 标签布局
- android - android:相对布局中两个文本视图之间的间隙
- vb.net - vb.net vbcrlf、environment.newline & vbcr 不工作
- python - Python 脚本将两个 wav 文件合并,而不是取消它们之间的共同幅度
- r - R中我的时间序列趋势中的NA值
- webpack - 如何解决语法错误:Webpack postcss 加载器不必要的大括号?
- sql-server - SQL Server Always Encrypted:操作数类型冲突:varchar 与 varchar(max) 不兼容