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