Php 搜索单词“quot;谷歌雅虎;在我的数据库中

Php 搜索单词“quot;谷歌雅虎;在我的数据库中,php,search,Php,Search,我想搜索我的数据库,比如“google yahoo”,当我输入时,我应该能够查看包含google和yahoo的行。除了雅虎,谷歌和雅虎的排名不需要相同。不管它在哪里,给我一个简单的逻辑。我可以查询那个东西,比如select*fromtablewhere列(“%google%yahoo%”)。我想用PHP开发这个东西,但是如何插入%。我是否需要使用if语句,以便在找到空格时可以在单词之间插入%,或者是否有其他逻辑使其更简单?如果要检查,如果一个字符串包含另一个字符串,可以使用。这可能如下所示 //

我想搜索我的数据库,比如“google yahoo”,当我输入时,我应该能够查看包含google和yahoo的行。除了雅虎,谷歌和雅虎的排名不需要相同。不管它在哪里,给我一个简单的逻辑。我可以查询那个东西,比如
select*fromtablewhere列(“%google%yahoo%”)
。我想用PHP开发这个东西,但是如何插入%。我是否需要使用
if
语句,以便在找到空格时可以在单词之间插入%,或者是否有其他逻辑使其更简单?

如果要检查,如果一个字符串包含另一个字符串,可以使用。这可能如下所示

// 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
    }
}

这样做的另一个可能性是使用。你应该首先确定你到底想做什么,然后决定你想使用哪种方法。

据我所知,你想要某个列的值为google或yahoo(或提供的任何单词)的行

询问 (将
替换为
,如果您对其中任何一个都满意)

PHP 基本上,PHP代码应该将给定的输入放在空格上,从而获得一个单词数组

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

columnname LIKE "%word%"

(您可能希望从搜索中筛选出常用词,例如a、in、of等)

这对于StackOverflow来说不是一个好问题。因为它是针对搜索引擎的,所以我的搜索查询在任何时候都是不同的,并且在查询中也有不同的字数(不完全是2个,可能超过2个)。在这种情况下,我怎么做?我是否需要在if条件之前进行while循环,以便它循环到string的末尾请参见我的编辑。但是请注意,搜索可能非常昂贵(就执行时间而言)。有多种搜索方法,如果时间很重要,而你不只是玩玩,请阅读这些方法,并尝试找到最适合你需要的方法。你的意思是我是否需要在单词的前面和后面包含%,以便%word%可以检查任何包含单词的内容。我有这个想法,我不知道建议做多少。因为我只处理小型数据库,所以我认为这不会是一个问题。另一件事是,每当用户在搜索查询中键入一个句子或单词时,我都要搜索每个单词(考虑到每个单词都有索引和独立搜索)。对此,你怎么说?考虑到每个单词的索引,还是通过添加%来过滤每个单词,哪个更好。我对您的数据库还不是很清楚,所以我真的不能说。我假设您正在表格的某个文本列中搜索单词。但是你说单词是索引的?请详细说明。例如,在我的描述栏中,我有这样一句话:“我是一个好孩子”。每当用户试图通过键入“am boy”来查找此句子时。在这种情况下,用户应该得到我在引号中写的句子。每当我们在查询中写入此内容时,它类似于“%am%boy%”。我在一些文章中看到,他们编写了带有索引的搜索。这里的索引只不过是数组中的单词(例如:i[0]=“am”i[1]=“boy”),在这种情况下,我可以搜索结果中每一个类似于或逻辑的单词。
columnname LIKE "%word%"