PHP SQL SELECT,其中包含多个单词的搜索项
发布时间:2020-12-13 13:02:55 所属栏目:PHP教程 来源:网络整理
导读:我有一个选择,如查询搜索表单,如下所示: ?php $bucketsearch = sanitizeone($_POST["bucketsearch"],"plain");$bucketsearch = strip_word_html($bucketsearch);? if(isset($_POST['search'])){ $result=MYSQL_QUERY( "SELECT * FROM buckets where bucketn
我有一个选择,如查询搜索表单,如下所示:
<?php $bucketsearch = sanitizeone($_POST["bucketsearch"],"plain"); $bucketsearch = strip_word_html($bucketsearch); ?> if(isset($_POST['search'])){ $result=MYSQL_QUERY( "SELECT * FROM buckets where bucketname like '%$bucketsearch%' order by bucketname"); }else{ $result=MYSQL_QUERY( "SELECT * FROM buckets order by bucketname"); } 我的问题是,如果有人搜索“苹果和梨”的例子,我没有得到任何包含任何单词的结果,我只能让它返回结果(1个结果)及其中的所有单词. 任何人都可以帮我把这个搜索更多一些吗?
那么你想要使用输入的每个单词进行AND搜索,而不是确切的字符串?怎么样这样:
$searchTerms = explode(' ',$bucketsearch); $searchTermBits = array(); foreach ($searchTerms as $term) { $term = trim($term); if (!empty($term)) { $searchTermBits[] = "bucketname LIKE '%$term%'"; } } ... $result = mysql_query("SELECT * FROM buckets WHERE ".implode(' AND ',$searchTermBits)."); 这会给你一个像这样的查询: SELECT * FROM buckets WHERE bucketname LIKE '%apple%' AND bucketname LIKE '%and%' AND bucketname LIKE '%pear%' 如果要匹配任何搜索词而不是全部,请将AND更改为OR.进一步的改进可能涉及定义一些停止词,如’和’,以提供更好的结果. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |