将数组的任何或所有部分匹配到mysql

时间:2012-04-04 21:20:24

标签: php

我有一个爆炸的搜索字符串,我需要查看它的任何或所有部分是否与mysql数据库表中的条目匹配。

如果用户搜索“pour house greensboro”之类的内容,则“pour house”将匹配表中的条目。但搜索也可能是“1美元啤酒倒绿色垃圾桶,或其他任何类似的东西,以任何顺序,所以我需要将搜索字符串的每个部分放在一起,检查它是否与数据库中的内容相匹配

所以,如果爆炸字符串的部分只是数字,那么我需要像这样检查它:
0 + 1 + 2 + 3 + 4
0 + 1 + 2 + 3
0 + 1 + 2
0 + 1
0
1 + 2 + 3 + 4
1 + 2 + 3
1 + 2
1
2 + 3 + 4
2 + 3
2
3 + 4
3
4个

可能有多于或少于5个部分的字符串

有没有办法轻松做到这一点?

4 个答案:

答案 0 :(得分:2)

我想出了如何做到这一点,直到现在才考虑更新......

(for $i=0; $i < count($search_string); $i++){
    $output = '';
    (for $a=$i; $a < count($search_string); $a++){
        $output = $output." ".$search_string[$a];
    }
}

答案 1 :(得分:1)

虽然%LIKE%会起作用,但它会很慢。您可能希望使用MySQL的全文搜索功能。只需谷歌一些教程:)

答案 2 :(得分:0)

你总是可以将爆炸的字符串放在一个数组中,并在数据库中为每个数组值进行查询搜索。即select * from table data = array [$ x];

答案 3 :(得分:0)

使用'%LIKE%':

SELECT *
  FROM MyTable
 WHERE MyField LIKE '%SearchKeyword1%'
    OR MyField LIKE '%SearchKeyword2%'
    OR MyField LIKE '%SearchKeyword3%'
...