如何使用2个或更多关键字搜索多个列

时间:2017-01-25 06:57:00

标签: php mysql

现在,有一个搜索栏可以在每列中搜索您输入的字词,例如

+--------+------------+
|  name  |  location  |
+--------+------------+
| Miley  | House      |
+--------+------------+
|  Bob   | Hotel      |
+--------+------------+

所以当你搜索Miley时,你会得到Miley | House的表格行,如果你搜索House,你也可以得到Miley | House。但是,如果我输入" Miley House"在搜索栏中它并没有输出任何东西。

代码:

<input type="text" id="search"  name="search" value="" > 

SQL

WHERE CONCAT(id, name, department, object, description, location, room, reg_date, until_date, reason, email) LIKE '%".$search."%'

如果能帮助我:)会很好,如何使用多个关键字进行搜索。

4 个答案:

答案 0 :(得分:0)

将您的条件更改为

WHERE CONCAT_WS(' ', id, name, department, object, description, location, room, reg_date, until_date, reason, email) LIKE '%".$search."%'

并检查

在你的&#34; Miley House&#34;不会得到,因为它之间有空间。并且查询将在您的concat条件中搜索完全匹配,这将永远不会满足。

因此,concat_ws(&#34;&#34;,id,name,department,object,description,location,room,reg_date,until_date,reason,email)将在每个字段值之前追加空格。所以完全匹配条件将满足要求。

答案 1 :(得分:0)

试试这个

SELECT CONCAT(`id`, `name`, `department`, `object`, `description`, `location`, `room`, `reg_date`, `until_date`, `reason`, `email`) as all_str FROM `tbl_name` 
WHERE `all_str` LIKE '%".$search."%'

答案 2 :(得分:0)

SELECT CONCAT(`id`, `name`, `department`, `object`, `description`, `location`, `room`, `reg_date`, `until_date`, `reason`, `email`) as data FROM `tablename` 
WHERE name LIKE '%fieldname%' OR location LIKE '%fieldname%'

答案 3 :(得分:-1)

嘿,如果你想更好地搜索MySql数据库中的数据,那么你可以使用全文搜索的概念,你必须根据全文索引概念改变表的全文搜索结构。

**** ****演示

CREATE TABLE文章(       id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,       title VARCHAR(200),       主体,       FULLTEXT(标题,正文) //全文索引       );

INSERT INTO文章(标题,正文)价值观      ('MySQL Tutorial','DBMS代表DataBase ......'),      ('如何使用MySQL','经历了......'),      ('优化MySQL','在本教程中我们将展示......'),      ('1001 MySQL Tricks','1。永远不要以root身份运行mysqld.2。......'),      ('MySQL vs. YourSQL','在以下数据库比较......'),      ('MySQL Security','配置正确,MySQL ......');

如果您想获得最佳结果,请点击以下查询。 SELECT title,body,MATCH(title,body)AGAINST('DBMS代表数据库'IN自然语言模式)all_data FROM articles by all_data desc limit 1;

我认为这对你有用..........