gpt4 book ai didi

PHP SQL SELECT where like 搜索带有多个词的项目

转载 作者:可可西里 更新时间:2023-11-01 06:30:58 27 4
gpt4 key购买 nike

我有一个 select where like query for a seach form,如下所示:

<?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");
}

我的问题是,如果有人搜索“apple and pear”,我没有得到任何包含任何单词的结果,我只能让它返回包含所有单词的结果(以及 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。进一步的改进可能涉及定义一些停用词,例如“和”,以提供更好的结果。

关于PHP SQL SELECT where like 搜索带有多个词的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3621310/

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