-2

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

4

2 回答 2

0

因此,据我了解,您想要某个列的值是 google 或 yahoo (或提供的任何单词)的行

查询

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

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

PHP的

本质上,您的 PHP 代码应该在空格上分割给定的输入,从而获得一个单词数组。

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

columnname LIKE "%word%"

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

于 2013-10-28T09:51:59.103 回答
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. 您应该首先确定您想要做什么,然后决定您要使用哪种方法。

于 2013-10-28T00:56:28.690 回答