我的数据库表中有以下两个列。
name = "Alex"
skills= "medical,electronics,books,technology"
现在我的问题是要在上述技能领域中搜索一个单词。 如果用户在搜索框中键入内容,我的查询将在数据库表(技能字段)中搜索一个完全以逗号分隔的单词,而不是单词的一部分。 例如,如果用户键入medi,则查询应返回false,但如果他键入医疗或书籍,则查询应返回true,因为医疗或书籍都存在。
所以任何人都可以告诉我如何在PHP中完成它。 如果我犯了错误,也请原谅我,因为我的英语不是那么强。
感谢。
答案 0 :(得分:2)
您有一个单词列表和一个要搜索的单词。
in_array
在这里会很理想。
$has_skill = in_array(strtolower($search),explode(",",strtolower($skills)));
请注意,我已将所有字符串转换为小写以方便搜索。
答案 1 :(得分:1)
在php中,您可以使用stripos函数http://php.net/stripos
即。 :
if (stripos($skills,',books,')!==false || stripos($skills,'books,')===0) echo $name have the skill books;
或直接在SQL下使用类似'%,myword,%'
即。 :
select name from table where skills like '%,books,%' or skills like 'books,%';
编辑。添加了技能第一的案例
答案 2 :(得分:1)
$is_in_string = in_array($name,explode(",",$skills));
注意:每次有大量用户输入字母时都会使用explode(",",$skills)
。
答案 3 :(得分:0)
$keywords = preg_split("/[\s,]+/", "medical,electronics,books,technology");
$search='electronics';
$o=in_array($search,$keywords);
if($o==1){
echo 'yes founded '.$search.'<br/>';
}
else{
echo 'sorry '.$search.'<br/>';
}
print_r($keywords);