gpt4 book ai didi

php - 使用查询创建高级搜索的问题

转载 作者:可可西里 更新时间:2023-10-31 22:56:08 27 4
gpt4 key购买 nike

我在使用自定义查询创建高级搜索和使用 $wpdb->get_results($query , OBJECT);

时遇到问题

在 wordpress 的普通搜索中,当我们搜索 xxx yyyy 或搜索 yyyy xxx 时,我们得到相同的结果,这很好。但是,当我被迫使用查询来创建高级搜索时,搜索字段中的单词序列很重要,而且 xxx yyyy 或搜索 yyyy xxx 的结果也不相同。我想举个例子说:我创建了两个输入字段,一个用于标题,另一个用于我帖子的作者(作者只是一个例子,在这个地方是一个自定义字段)我尝试阅读这些字段并在 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;
?>

在你的想法中,我必须做什么?

最佳答案

您可以用 空格 字符分隔搜索词,然后构建查询以查找单词的所有可能顺序。以下是您的 Title 字段的示例:

// 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 - 使用查询创建高级搜索的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15806021/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com