在我的数据库中搜索“google yahoo”这个词

时间:2013-10-28 00:43:31

标签: php search

我想搜索我的数据库,例如单词“google yahoo”,当我输入时,我应该能够查看google和yahoo的行。除了雅虎之外,它不需要处于相同的顺序和谷歌。无论它在哪里,都给我一个简单的逻辑。我可以查询那件事,比如select * from table where column like("%google%yahoo%")。我想用PHP开发这个东西,但是如何插入%。我是否需要使用if语句,以便每当找到空格时都可以在单词之间插入%,或者是否有其他逻辑可以使其更简单?

2 个答案:

答案 0 :(得分:0)

如果要检查,如果字符串包含其他字符串,则可以使用stristr。这看起来像下面的

// for fixed strings
if ( stristr($text, 'google') !== FALSE && stristr($text, 'yahoo') !== FALSE)
    // both found

// for dynamic amount of strings
$searchfor = array('google','yahoo');
foreach ($searchfor as $needle) {
    if (stristr($text, $needle) === FALSE) {
        // $needle not found
    } else {
        // $needle found
    }
}

另一种可能性是使用preg_match。您首先应该确定,您想要做什么,然后决定要使用哪种方法。

答案 1 :(得分:0)

所以根据我的理解,你想要某个列的值是google或yahoo(或者提供的任何单词)的行

查询

SELECT * FROM tablename WHERE columnname LIKE "%google%" AND columnname LIKE "%yahoo%"

(如果您对其中任何一个感到满意,请将AND替换为OR

PHP

基本上你的PHP代码应该split空格上的给定输入,从而获得单词数组。

接下来,当您构建查询时,对于每个字,它应附加以下子句:

columnname LIKE "%word%"

(您可能希望过滤掉搜索中的常用单词,例如a,in,of等)