Php MySQL选择查询,通过在搜索栏中键入多个单词从多个列中检索数据
好吧,就这样吧,我有一个数据库,比如说有两列: “姓名”和“姓氏” 当我在输入框中键入一个类似“John”的名称时,它将从“name”列检索所有John的名称。当我输入像“Doe”这样的姓氏时,它将从“lastname”列检索所有的Doe。这正如预期的那样有效 但当我输入“johndoe”时,我希望它也能从这两个列中检索数据,所以它会返回所有johndoe的数据。当在搜索栏中输入一个单词时,它可以正常工作,但是当我在空格后输入另一个单词时,它不符合我的要求,因为我不知道如何正确地形成查询 下面是query.php的代码:Php MySQL选择查询,通过在搜索栏中键入多个单词从多个列中检索数据,php,mysql,Php,Mysql,好吧,就这样吧,我有一个数据库,比如说有两列: “姓名”和“姓氏” 当我在输入框中键入一个类似“John”的名称时,它将从“name”列检索所有John的名称。当我输入像“Doe”这样的姓氏时,它将从“lastname”列检索所有的Doe。这正如预期的那样有效 但当我输入“johndoe”时,我希望它也能从这两个列中检索数据,所以它会返回所有johndoe的数据。当在搜索栏中输入一个单词时,它可以正常工作,但是当我在空格后输入另一个单词时,它不符合我的要求,因为我不知道如何正确地形成查询 下面是
问题在于你的代码
如果你想做一个像约翰·多伊那样的搜索,你需要把每个单词分开,然后把它放到谎言里,当然这会降低查询的速度
即:
这将为您提供与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%"