Php MySQL选择查询,通过在搜索栏中键入多个单词从多个列中检索数据

Php MySQL选择查询,通过在搜索栏中键入多个单词从多个列中检索数据,php,mysql,Php,Mysql,好吧,就这样吧,我有一个数据库,比如说有两列: “姓名”和“姓氏” 当我在输入框中键入一个类似“John”的名称时,它将从“name”列检索所有John的名称。当我输入像“Doe”这样的姓氏时,它将从“lastname”列检索所有的Doe。这正如预期的那样有效 但当我输入“johndoe”时,我希望它也能从这两个列中检索数据,所以它会返回所有johndoe的数据。当在搜索栏中输入一个单词时,它可以正常工作,但是当我在空格后输入另一个单词时,它不符合我的要求,因为我不知道如何正确地形成查询 下面是

好吧,就这样吧,我有一个数据库,比如说有两列: “姓名”和“姓氏”

当我在输入框中键入一个类似“John”的名称时,它将从“name”列检索所有John的名称。当我输入像“Doe”这样的姓氏时,它将从“lastname”列检索所有的Doe。这正如预期的那样有效

但当我输入“johndoe”时,我希望它也能从这两个列中检索数据,所以它会返回所有johndoe的数据。当在搜索栏中输入一个单词时,它可以正常工作,但是当我在空格后输入另一个单词时,它不符合我的要求,因为我不知道如何正确地形成查询

下面是query.php的代码:


问题在于你的代码

如果你想做一个像约翰·多伊那样的搜索,你需要把每个单词分开,然后把它放到谎言里,当然这会降低查询的速度

即:

这将为您提供与
John Doe
的精确匹配

SELECT * 
FROM  `actor` 
WHERE CONCAT( firstname,  ' ', lastname ) LIKE  "%$searchbar%"
当您的表增加时,这可能会变得非常缓慢。但它是有效的。 如果您还希望能够将firstname lastname的顺序切换为lastname firstname,只需将其添加到查询中:

OR CONCAT( lastname,  ' ', firstname ) LIKE  "%$searchbar%"

. 它们不再得到维护。看到了吗?改为了解,并使用或-将帮助您决定哪个。您在搜索框中键入另一个单词是什么意思?@RaheelShan,我的意思是如果我键入多个单词。这正是我要查找的。谢谢
OR CONCAT( lastname,  ' ', firstname ) LIKE  "%$searchbar%"