Php 有人能给我写这个函数的查询的正确方法吗?

Php 有人能给我写这个函数的查询的正确方法吗?,php,mysql,pdo,Php,Mysql,Pdo,我正在尝试实现搜索功能,用户可以搜索以下任何一项:姓名、年龄、地址、性别、课程和年份 SELECT * FROM student WHERE name LIKE '%name%' OR age BETWEEN 'age' AND 'age' OR address LIKE '%address%' OR gender = 'gender' OR course LIKE '%course%' OR YEAR = 'year' Note: each of the search

我正在尝试实现搜索功能,用户可以搜索以下任何一项:姓名、年龄、地址、性别、课程和年份

SELECT *
FROM student
WHERE name LIKE '%name%'
  OR age BETWEEN 'age' AND 'age'
  OR address LIKE '%address%'
  OR gender = 'gender'
  OR course LIKE '%course%'
  OR YEAR = 'year'


Note: each of the search criteria is in different input field
但每当用户输入1个或多个搜索条件时,我都无法得到正确的结果

我知道什么时候使用
,但我就是找不到正确的方法来编写查询

例子是:我有一个学生

id   name   address   age   gender  course  year

2    juan   New York   19    male   IT      2
4    whitney New Jersey 23    female BA     4
7    manny   Canada     20    male   Law    2

Note: age is a select input field. example is 
15-20
20-25
25-30 and etc.

然而,当我试图搜索例如is course,它是
IT
,它会返回所有错误的记录。正确的结果应该只与第一条记录相关。

我想这就是你想要的

SELECT * FROM student WHERE name LIKE '%name%'  OR (age > 23 AND age < 30)
OR address LIKE '%address%'  OR gender = 'gender' OR course LIKE '%course%' 
OR YEAR = 'year'
从名为“%name%”或(年龄大于23岁且年龄小于30岁)的学生中选择*
或类似于“%address%”的地址或类似于“%course%”的课程
或年份='YEAR'

这里没有足够的信息。“年龄”与“年龄”有何不同?无论哪种方式,这个话题都必须在以太网上广泛讨论。年龄真的是一个字符串吗?使用TRIM如果你想处理“年龄”和“年龄”,你应该提供示例数据和你想要返回的内容的示例。非工作查询并不总是很好地传达您想要做的事情,这可能会让您感到惊讶。而且,在带有BETHEN子句的字段上使用相同的值是没有意义的。您可以直接在其上使用等于<代码>介于“年龄”和“年龄”之间的年龄
应为
年龄=“年龄”
介于“年龄1”和“年龄2”之间的年龄