Php 排除年龄在15岁以下且数据库中没有年龄的玩家

Php 排除年龄在15岁以下且数据库中没有年龄的玩家,php,html,mysql,Php,Html,Mysql,我试图排除那些比我小15岁的球员,我的方法可以吗?我不想把年龄放在数据库里。 或者可以从sql查询将datebirth转换为YearSeld now吗 I have 3 data in player which is Name | Gender | Age A | Male | 15 B | Male | 13 C | Male | 16 <?php $sql = "SELECT * FROM player WHERE Playergender='Male

我试图排除那些比我小15岁的球员,我的方法可以吗?我不想把年龄放在数据库里。 或者可以从sql查询将datebirth转换为YearSeld now吗

I have 3 data in player which is
Name | Gender | Age
A    | Male   | 15
B    | Male   | 13
C    | Male   | 16


<?php
$sql = "SELECT * FROM player WHERE Playergender='Male'"; 
$result = mysqli_query($con,$sql);
echo "<span>Select Player:</span><select>";
echo "<option>--Select Player--</option>";
while($row = mysqli_fetch_array($result))
  {
$Playername=$row['playername'];
$Datebirth=$row['Datebirth'];
$from = new DateTime($Datebirth);
$to   = new DateTime('today');
$yearsold=$from->diff($to)->y;
if(yearsold<15)
{
echo "<option value=ID>" . $Playername . "<option>";
else
echo "<option value=ID>" . $Playername . "</option>;
?>

获取15岁以上用户的MySQL查询将是:

$sql = "SELECT * FROM player WHERE Playergender='Male' AND Datebirth < (CURDATE() - INTERVAL 15 YEAR)"; 

使用MySQL可以获得年龄:

因此,在你的情况下,这将是

SELECT *,YEAR(CURRENT_TIMESTAMP) - YEAR(Datebirth) - (DATE_FORMAT(CURRENT_TIMESTAMP, '%m%d') < DATE_FORMAT(Datebirth, '%m%d')) as age FROM player WHERE Playergender='Male' WHERE age<15

如果你不需要其他球员的数据,这种方法会更好地发挥作用。

我不知道你的问题在哪里,但即使他们不到15岁,你也会为他们打印一份表格。你是说还是?我不认为你可以嵌套选项谢谢,伙计,它可以工作:我把>改成它,做相反的事情。谢谢,如果我使用这段代码,这看起来更复杂,我得到了年龄的查询错误未知列DateBorth从datenow的转换应该是=年龄我试过了,但失败了。无论如何,谢谢你。我将研究线程,并尝试如何做到这一点。