需要帮助解决我的问题...
我的数据库中有一条记录,其中包含一行中的多个单词。
示例:
PRODUCT_NAME:
white sugar big
brown sugar big
white sugar small
brown sugar small
现在......我做了一个选择查询,能够选择产品甚至不完整的单词。我在这里使用'喜欢'。
select * from products where prod_name like '%".$pname."%'
注意:$ pname是一个php varriable ...
所以我试着查询“whi”这个词
然后结果是:
white sugar big
white sugar small
现在我的问题是我想让我的搜索灵活,如果我搜索单词“whi bi”
结果将是“
white sugar big....
thnx in adavance =)
答案 0 :(得分:2)
在构建查询之前,只需用php变量中的%
替换每个空格。
答案 1 :(得分:0)
将搜索字词中的空格替换为%
$term = str_replace(" ", "%", $term)
然后执行db查询。
答案 2 :(得分:0)
您可能想在MYSQL中尝试全文搜索,这将自动编译基于评分的搜索:
请参阅http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html
select * from products where MATCH (prod_name) AGAINST ('whi bi')
或者,你可以爆炸这个词并构建多个搜索:
$searchTerms = explode(' ',$pname);
$term='%'.str_replace(' ','%',$pname).'%';
$sql = "select * from products where prod_name like '$term'";
答案 3 :(得分:0)
简单的答案类似于使用{%{1}}关键字使用“%xx%yyy%zzz%”发布的答案。如果您希望有复杂的搜索,那么您可以使用REGEXP:
LIKE
然后你的PHP代码需要准备:
select * from products where prod_name REGEXP 'whi[.]*bi[.]*'