我想搜索我的数据库,例如单词“google yahoo”,当我输入时,我应该能够查看google和yahoo的行。除了雅虎之外,它不需要处于相同的顺序和谷歌。无论它在哪里,都给我一个简单的逻辑。我可以查询那件事,比如select * from table where column like("%google%yahoo%")
。我想用PHP开发这个东西,但是如何插入%。我是否需要使用if
语句,以便每当找到空格时都可以在单词之间插入%,或者是否有其他逻辑可以使其更简单?
答案 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代码应该split空格上的给定输入,从而获得单词数组。
接下来,当您构建查询时,对于每个字,它应附加以下子句:
columnname LIKE "%word%"
(您可能希望过滤掉搜索中的常用单词,例如a,in,of等)