Php 除非在输入字段中指定,否则搜索筛选查询不会输出值

Php 除非在输入字段中指定,否则搜索筛选查询不会输出值,php,mysql,Php,Mysql,我正在尝试创建一个搜索过滤器查询,该查询根据全名、年龄、国家和州显示结果。除了一个关于按年龄过滤的小问题外,一切正常。仅供参考,我正在抓取一个min\u age和max\u age并希望返回给定范围内的任何人。如果有人没有在任何字段中输入任何值,那么我希望所有人都能从数据库中显示出来,除了年龄部分之外,这一切都正常 我在数据库中有0岁以上的人。如果没有输入值,则显示所有0岁的人。对于年龄较大的人,需要显示minu_age和max_age(我不希望这样,我希望所有人都出现) 另外,以下查询是用ph

我正在尝试创建一个搜索过滤器查询,该查询根据全名、年龄、国家和州显示结果。除了一个关于按年龄过滤的小问题外,一切正常。仅供参考,我正在抓取一个
min\u age
max\u age
并希望返回给定范围内的任何人。如果有人没有在任何字段中输入任何值,那么我希望所有人都能从数据库中显示出来,除了年龄部分之外,这一切都正常

我在数据库中有0岁以上的人。如果没有输入值,则显示所有0岁的人。对于年龄较大的人,需要显示
minu_age
max_age
(我不希望这样,我希望所有人都出现)

另外,以下查询是用php编写的,其格式仅供阅读:)

谢谢你的帮助

$query = "SELECT 
              CONCAT_WS(' ', person.given_name, person.family_name) AS 
              full_name, 
              TIMESTAMPDIFF(YEAR, person.date_of_birth, CURDATE()) AS age, 
              country.name AS country, 
              state.name AS state 
          FROM 
              person INNER JOIN 
              country ON country.country_id = person.country_id INNER JOIN 
              state ON state.state_id = person.state_id 
          WHERE 
              CONCAT_WS(' ', person.given_name, person.family_name) LIKE ? AND 
             (TIMESTAMPDIFF(YEAR, person.date_of_birth, CURDATE()) BETWEEN ? 
              AND ?) AND 
              country.name LIKE ? AND 
              state.name LIKE ?";

$result = $this->database->query($query, ["$playerName%", $playerAgeMin, $playerAgeMax, "$countryName%", "$stateName%"]);
以下是一个例子:

  • 约翰·史密斯,26,澳大利亚昆士兰州
  • 厄尔·约翰逊,0,澳大利亚,新南威尔士州
  • 蒂姆·多诺万,0,新西兰,奥克兰
  • 朱迪·弗洛雷斯,25岁,新西兰,奥塔哥
如果没有为任何输入字段提供值,则为: “姓名”、“姓氏”、“最低年龄”、“最高年龄”、“国家”、“州”, 然后,
Earl Johnson
Tim Donovan
将显示,但不会显示
John Smith
Judy Flores

如果我将年龄范围设置在
20
30
之间,则
John Smith
Judy Flores
都将显示


同样,如果在输入字段中没有指定任何值,我希望每个人都显示。

为什么不在PHP中处理这个问题?通过在PHPWell中验证用户输入,在查询中添加或删除条件会更容易。我现在觉得很傻,为什么不在PHP中处理这个问题?通过在PHPWell I feel now XD中验证用户输入,可以更轻松地添加或删除查询条件