mysql以任意顺序搜索多个关键字 [英] mysql multiple keyword search in any order

查看:288
本文介绍了mysql以任意顺序搜索多个关键字的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个简单的MySQL数据库关键字搜索功能.但是,如果关键字的顺序与在数据库中输入的顺序不同,则不会返回搜索结果.例如,搜索"dog cat lion cat"将返回结果,但是搜索"dog lion cat"将不返回结果. 任何有关如何解决此问题的帮助将不胜感激.这是我的代码.

I have a simple MySQL database keyword search that is functional. However results for the search are not being returned if the keywords are not in the same order as entered in the database. For example searching for "dog cat lion" will return a result, but searching for "dog lion cat" will return no results. Any help on how to fix this issue would be greatly appreciated. Here is my code.

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Part Search</title>
</head>

<body>
<?php
$username = "xxxx";
$password = "xxxx";
$hostname = "localhost"; 

//connection to the database
mysql_connect($hostname, $username, $password); 
mysql_select_db("wesco");

$search = mysql_real_escape_string(trim($_POST['searchterm']));

$find_parts = mysql_query("SELECT * FROM `parts` WHERE `keywords` LIKE '%$search%'");

while($row = mysql_fetch_assoc($find_parts))
{
$name = $row['name'];
echo "$name<br />";

}

?>
</body>
</html>

推荐答案

您可以使用类似的

$searchArray = explode(" ", $_POST['searchterm']);
$query = "";
foreach($searchArray as $val) {
    $search = mysql_real_escape_string(trim($val));
    if (!empty($query)) {
        $query = $query . " OR "; // or AND, depends on what you want
    }

    $query = $query . "`keywords` LIKE '%$search%'";
}

if (!empty($query)) {
    $find_parts = mysql_query("SELECT * FROM `parts` WHERE $query");
}

此外,您应该停止使用mysql_*函数,并开始使用mysqli的面向对象实现.

Also, you should stop using the mysql_* functions and start using the object oriented implementation of mysqli.

这篇关于mysql以任意顺序搜索多个关键字的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆