脚本宝典收集整理的这篇文章主要介绍了php – 使用查询创建高级搜索时出现的问题,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
在wordpress中的普通搜索中,当我们搜索xxx yyyy或搜索yyyy xxx时,我们有相同的结果,这很好.
但是当我被迫使用查询来创建高级搜索时,搜索字段中的单词序列很重要,而且xxx yyyy或搜索yyyy xxx的结果不一样.
我想用一个例子来说:
我为TITle创建了两个输入字段,为我的帖子的Author创建了另一个输入字段(Author仅是示例,在此处是自定义字段)
我尝试阅读这些字段并在wordpress中搜索它们
<?PHP $t = $_REQUEST['title']; $a = $_REQUEST['author']; global $wpdb; $query = "SELECT DISTINCT wp_posts.* From wp_posts,wp_postMeta WHERE wp_posts.ID = wp_postMeta.post_id"; if ($t != '') { $t_sql = " AND wp_posts.post_title like '%$t%' "; } if ($a != '') { $a_sql = " AND wp_postMeta.Meta_key = 'Author' AND wp_postMeta.Meta_value like '%$a%' "; } $query .= $t_sql; $query .= $a_sql; $pageposts = $wpdb->get_results($query,OBJECT); global $post; if ($pageposts): foreach ($pageposts as $post): SETUP_postdata($post); //... enDForeach; endif; ?>
在你的想法中,我该怎么办?
// Assuming the title is "One Two Three" $t = $_REQUEST['title']; // Split the TITLE by space character $terms = explode(' ',$t); // $terms = ["One","Two","Three"] // Concats each seArch term with a LIKE operator $temp = array(); foreach ($terms as $term) { $temp[] = "title LIKE '%".$term."%'"; // $temp = ["title LIKE %One%","title LIKE %Two%",... } // Adds an AND oPErator for each $temp to the query statement $query = "SELECT * From titleTable WHERE (".implode(' AND ',$temp).")"; // $query = SELECT * FROM titleTable WHERE // (title LIKE '%One%' AND title LIKE '%Two%' AND title LIKE '%Three%')
以上是脚本宝典为你收集整理的php – 使用查询创建高级搜索时出现的问题全部内容,希望文章能够帮你解决php – 使用查询创建高级搜索时出现的问题所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。