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中验证用户输入,可以更轻松地添加或删除查询条件